2017-07-27 43 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

相關問題