我在用户和工作人员之间有一个关系/层次结构:工作人员始终是用户,但用户也可以是学生或管理员。现在,通过查询,我只想获取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);
}
答案 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)];