2017-07-27 59 views
0

我使用Yii 2如何Yii中的Active Record的模式表与其他表使用JOIN

我有台式User在DB链接。 我试图链接此表与表auth_assignment其中列user_id,item_namecreated_at使用LEFT JOIN子句。我写了这个:

$model = User::find()->leftJoin('auth_assignment AS a', '`a`.`user_id` = `user`.`id`'); 

然后附上$modelActiveDataProvider

$dataProvider = new ActiveDataProvider([ 
    'query' => $model, 
    'pagination' => [ 
     'pageSize' => 5, 
    ], 
]); 

但是当我运行的应用程序只会打印User小号列:screenshot

我做什么了?

回答

0

User模型中,您无法获取其他表的属性(auth_assignment)。

你可以通过两种方式做到这一点。

  1. 使用hasOne()

例定义Userauth_assignmentUser模型之间的关系:(使用auth_assignment表型号名称)

public function getAuth() 
{ 
    return $this->hasOne(Authassignment::className(), ['id' => 'user_id']); 
} 

比你可以使用auth_assignment表的属性$model->auth->user_id;

  1. 生成查询作为数组如下,在这种情况下,您不需要定义模型中的关系。

$model = User::find() ->select('user.*,a*') ->leftJoin('auth_assignment AS a', 'a.user_id= user.id') ->asArray();

$dataProvider = new ActiveDataProvider([ 'query' => $model, 'pagination' => [ 'pageSize' => 5, ], ]);

现在你可以使用属性为数组变量即 $model['user_id']

+0

谢谢,帕特尔! asArray()对我来说应该是一样的。 – Wingear

相关问题