我想在关系中获取所有记录,其中非空
所以我的桌子是
tbl_truck
id, name
tbl_checks
id
truck_id //foreign key from tbl_truck table id
所以在我的查询中我有
$query = TblTrucksModel::find()
->leftJoin('tbl_checks','tbl_trucks.id = tbl_checks.truck_id')
->where() //here add the condition
所以基本上我只想从tbl_truck
获取tbl_checks
中存在的ID {/ 1}}
Nb:TblTrucksModel
代表tbl_trucks
表
我如何继续这一点。
答案 0 :(得分:1)
试试这个。
$query = TblTrucksModel::find();
$query->select('t.*');
$query->from('tbl_truck t');
$query->leftjoin('tbl_checks c','t.id = c.truck_id');
$query->where('c.id is not null');
$result = $query->all();
答案 1 :(得分:1)
应该使用运营商sintax
$query = TblTrucksModel::find()
->leftJoin('tbl_checks','tbl_trucks.id = tbl_checks.truck_id')
->where(['not', ['tbl_trucks.id' => null]])
答案 2 :(得分:0)
如果您打算不在tbl_truck
表格中显示tbl_checks
中没有相关记录的卡车,只显示有关联的记录,那么您应该使用innerJoin
而不是leftJoin
左侧联接将显示tbl_truck
显示truck_id
为NULL
的所有记录,以显示truck_id
中没有关联或匹配tbl_checks
的记录{1}}
TblTrucksModel::find()
->innerJoin('tbl_checks','tbl_trucks.id = tbl_checks.truck_id')
在这种情况下,您不需要额外的where
子句。