1、在模型类中定义一个方法
public function getUser() { return $this->hasOne(user::className(), ['userid'=>'profileid']); //关联查询 }
2、在控制器中访问
public function actionQuery() { $user=User::find()->where(['username'=>'csdn'])->one(); $user->user; //用访问属性的方式去访问 getUser() 方法 }
*分析:
模型中是不存在user属性的,为什么可以这样写呢???
其实这个只是 PHP 魔术方法的__get的一种实现。
为了更高的访问了我们的数据,Yii2 提供了可以用属性的方式去获取类的一个方法。
可以追溯到源代码(yii2\base\Component.php)中的方法 public function __get($name) 查看具体定义。