繁体   English   中英

Yii2 左连接查询与非 null 条件

[英]Yii2 left join query with not null condition

我有一个书籍和书籍借阅表,我想查询所有借阅的书籍不是 null。

表结构为

tbl_books
   id
   name

然后借书

tbl_borrowed_books
    id
    book_id
    borrowed_at

所以在我的查询中我有

$query = TblBooks::find()->leftJoin('tbl_borrowed_books','tbl_borrowed_books.book_id = tbl_books.id')->all();

所以现在我想添加一个条件,我想在tbl_borrowed_books中获取所有有记录的书籍

我如何检查不是 null

所以像

   $query = TblBooks::find()->leftJoin('tbl_borrowed_books','tbl_borrowed_books.book_id = tbl_books.id')
  ->where('<>','') //stuck here on adding the not null condition
  ->all();

如果您坚持使用LEFT JOIN ,那么您可以检查第二个表中不能将NULL作为有效值的任何列。 例如,您可以使用它的主键或外键列。

 $query = TblBooks::find()
    ->leftJoin(
        'tbl_borrowed_books',
        'tbl_borrowed_books.book_id = tbl_books.id'
    )->where(['not', 'tbl_borrowed_books.book_id', NULL])
    ->all();

但最好使用INNER JOIN ,因为它只返回两个表中都存在匹配记录的记录。 因此,它的作用与WHERE tbl_borrowed_books.book_id IS NOT NULL的作用完全相同。

$query = TblBooks::find()
    ->innerJoin(
        'tbl_borrowed_books',
        'tbl_borrowed_books.book_id = tbl_books.id'
    )->all();

更多基于ActiveRecord的解决方案来获取相交的借书:

$borrowedBooks = TblBooks::find()->joinWith('borrowedBooks', true, 'inner join')->all();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM