[英]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.