0

我正在尝试获取数据find()

这是我的代码:

 $query = Users::find()->where("is_deleted = '0'")->join('INNER JOIN', 'roles', 'users.role = roles.id')->join('INNER JOIN', 'email_list' , 'users.email = email_list.id')->select('users.name , users.user_name , email_list.email ,roles.name role');

我在电子邮件字段中得到的只是0.

我测试了数据库并且有真实的电子邮件。

网格代码:

GridView::widget([
'dataProvider' => $dataProvider,
//'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'name',
'user_name',
'email:email',
'role',
['class' => 'yii\grid\ActionColumn'],
],
]);

为什么是这样 ?如何解决?

4

1 回答 1

3

你正在使用 ActiveRecord,但你加入的不是 ActiveRecord 应该的。在模型中为每个连接创建关系:

public function getRoles()
{
    return $this->hasMany(Role::className(), ['user_id' => 'id']);
}

public function getEmailLists()
{
    return $this->hasMany(EmailList::className(), ['user_id' => 'id']);
}

并像这样使用它:

Users::find()->joinWith(['roles', 'email_list']);
于 2014-04-28T18:05:44.570 回答