我想获取关系中的所有记录,其中它不为空
所以我的桌子是
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
中获取 id,这些 id 也存在于tbl_checks
注意:TblTrucksModel
表示tbl_trucks
表
我该怎么继续。
应该使用运算符 sintax
$query = TblTrucksModel::find()
->leftJoin('tbl_checks','tbl_trucks.id = tbl_checks.truck_id')
->where(['not', ['tbl_trucks.id' => null]])
试试这个。
$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();
如果您打算不显示tbl_truck
表中在tbl_checks
中没有关联记录的卡车,而只显示具有关联的记录,则应使用innerJoin
而不是leftJoin
因为左联接将显示tbl_truck
中的所有记录,显示truck_id
为NULL
那些在tbl_checks
中没有关联或匹配truck_id
的记录
TblTrucksModel::find()
->innerJoin('tbl_checks','tbl_trucks.id = tbl_checks.truck_id')
在这种情况下,您不需要额外的where
子句。