yii2用 joinWith 、with关联模型后用select指定返回列时不返回关联模型的问题

yii2用 joinWith 、with关联模型后用select指定返回列时不返回关联模型的问题

public function getFirstChildren()
    {
        return $this->hasMany(User::className(), ['parent_id'=>'user_id'])
        ->alias('f')->andWhere(['f.is_delete'=>0,'f.type' => 1])
        ->with('facilitator')
        ->select(['f.id','f.nickname','f.parent_id','f.addtime']);
    }

如以上代码所示,当不使用select时,with的facilitator模型数据被返回了,如果使用了select,facilitator模型数据为NULL.。

当使用select时,要把User 中与facilitator的关联字段facilitator_id包含进去

public function getFirstChildren()
    {
        return $this->hasMany(User::className(), ['parent_id'=>'user_id'])
        ->alias('f')->andWhere(['f.is_delete'=>0,'f.type' => 1])
        ->with('facilitator')
        ->select(['f.id','f.nickname','f.parent_id','f.addtime','f.facilitator_id']);
    }

这样facilitator模型就能正常返回了。

取值(不用asArray()也能取值):

$res = User::find()->with('firstChilren')->all();
$facilitator = $res['facilitator'];
$facilitatorId = $res['facilitator']['id'];

 

 

你可能感兴趣的:(php)