Php Yii2紧急加载不工作
我的数据库中有两个实体,它们通过一对多关系关联:“用户”和“广告” 我已经使用gii生成了模型类。 这是我在模型类中为用户提供的:Php Yii2紧急加载不工作,php,activerecord,yii2,Php,Activerecord,Yii2,我的数据库中有两个实体,它们通过一对多关系关联:“用户”和“广告” 我已经使用gii生成了模型类。 这是我在模型类中为用户提供的: public function getAds() { return $this->hasMany(Ad::className(), ['user' => 'id']); } 对于我的广告模型: public function getUser0() { return $this->hasOne(User::className(),
public function getAds()
{
return $this->hasMany(Ad::className(), ['user' => 'id']);
}
对于我的广告模型:
public function getUser0()
{
return $this->hasOne(User::className(), ['id' => 'user']);
}
根据Yii2文档,在控制器中时
$ads = Ad::find()->all();
var_dump($ads[0]->user);
它应该急切地从数据库加载用户数据,但我只得到外键(1)。
即使我尝试
$ads = Ad::find()->with('user0')->all();
var_dump($ads[0]->user);
还是一样
谢谢。如果我想在ActiveController中通过xml发送广告及其相关用户数据,是否必须执行以下操作:
$t = array();
foreach ($ads as $ad) {
$t[] = [$ad, $ad->user0];
}
return $t;
或者有一种更直接的方法可以做到这一点?您仍然可以在有或没有急切加载的情况下获得广告对象 不同之处在于关系的填充方式,通过延迟加载,只有在访问关系时才会加载关系
$ads = Ad::find()->all();
foreach ($ads as $ad) {
var_dump($ad->user0); // query to load user record here
}
由于迫不及待的装载,他们被安置在最前面
$ads = Ad::find()->with('user0')->all();
foreach ($ads as $ad) {
var_dump($ad->user0); // user0 already populated, no query
}
也许你需要加入
$ads=Ad::find()->joinWith('user0')->all();