yii2 leftjoin查询构建器

时间:2019-02-04 19:40:58

标签: php yii2 query-builder

我在用户和工作人员之间有一个关系/层次结构:工作人员始终是用户,但用户也可以是学生或管理员。现在,通过查询,我只想获取User中is_disabled字段等于false的人员记录。我尝试了以下操作,但给了我错误:

  

工作人员没有is_disabled字段

是的,该字段仅在用户表中。

用户

 * @property int $id
 * @property string $username
 * @property string password

工作人员

 * @property int $id
 * @property string $cellphone
 * @property string $phone
 * @property string $link
 * @property User $id0

SearchStaff

public function search($params)
{
    $query = Staff::find()
    ->leftJoin('user', '`user`.`id` = `staff`.`id`')
    ->where(['user.is_disabled' => false);
}

1 个答案:

答案 0 :(得分:1)

联接错误,外键应为id0

public function search($params)
{
    $query = Staff::find()
    ->leftJoin('user', 'user.id = staff.id0')
    ->where(['user.is_disabled' => false);
}

您还可以在Staff模型中创建关系:

public function getUser(){
    return $this->hasOne(User::className(), ['id' => 'id0']);
}

并编辑查询:

$query = Staff::find()
  ->joinWith('user')
  ->where(['user.is_disabled' => false)];