Yii2 模型关系不为空

  • 本文关键字:关系 模型 Yii2 php yii2
  • 更新时间 :
  • 英文 :


我想获取关系中的所有记录,其中它不为空

所以我的桌子是

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_idNULL那些在tbl_checks中没有关联或匹配truck_id的记录

TblTrucksModel::find()
         ->innerJoin('tbl_checks','tbl_trucks.id = tbl_checks.truck_id')

在这种情况下,您不需要额外的where子句。

最新更新