php - Yii2 不为空条件的左连接查询
问题描述
我有一个书籍和书籍借阅表,我想查询所有借阅书籍不为空的借阅书籍。
表结构为
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
我如何检查不为空
所以像
$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();
推荐阅读
- docker-compose - 设置 gRPC DB-less API 网关:415 Unsupported Media Type
- get - Pouch DB - 创建的数据库 - 保存在 _id 下 - 尝试检索以后的更改数据并重新保存
- azure-cosmosdb - 如果您尝试在强一致性 cosmos DB 中写入后立即读取数据,会发生什么情况?
- javascript - 使用另一个页面的 div 弹出小窗口
- ios - 无法使用 WKWebView 在 Safari 中打开外部链接
- php - 将谷歌地图商店定位器转换为 laravel 不起作用
- react-native - Typeerror:React-native android中的网络请求失败
- javascript - 如何在角度单元测试中对服务进行单元测试?
- html - Heroku 应用程序崩溃 - 不提供静态 html 内容(Express 服务器)
- maven - 在 Visual Studio 代码中将 Evosuite 插件添加到 Maven 项目时缺少工件 ID