mysql - 如何使用 Laravel 模型从另一个表中不存在 id 的表中选择记录?
问题描述
项目清单
我需要从 id 不存在于另一个表中的表中选择数据,或者如果存在则检查其他条件。我可以通过
Task::join('events','events.task_id' ,'=','tasks.id')
->where('events.event_type','=','Task')
->where('events.task_stage','!=','assigned')->select('tasks.*');
但我认为这不是正确的方法。
例如:
+-------------------------+ +-------------------------+
| tasks | | Events |
+----------+--------------+ +-------------------------+
| id | name | | task_id | task_stage |
| 1 | Task1 | | 1 | 'assigned' |
| 2 | Task2 | | 2 | 'created' |
+----------+--------------+ +----------+--------------+
结果应该是:
id 为 2 的任务仅创建未分配。我是新来的查询。提前致谢...
解决方案
Closure
将 a作为第二个参数传递给join
方法。将Closure
收到一个JoinClause
对象,该对象允许您在join
子句上指定约束:
Task::join('events', function ($join) {
$join->on('events.task_id', '=', 'tasks.id')
->where('events.event_type', '=', 'Task')
->where('events.task_stage', '!=', 'assigned');
})->select('tasks.*')->get();
推荐阅读
- javascript - Gatsby 网站不呈现 GIF
- mtproto - MTProto 连接被服务器关闭
- r - 如何在 R 中按列将一个 data.table 划分为另一个?
- kotlin - Kotlin,具有 2 个实现和泛型的不可变接口
- tensorflow - ImportError:无法在 HuggingFace 变形金刚中导入名称“hf_bucket_url”
- swift - 在 Swift 中缩短 URL
- python - 如何在不写入 Python 文件的情况下处理 API 返回?
- javascript - javaScript中的if语句有问题
- python-3.x - 为什么选择属性(python)不起作用?
- visual-studio-code - 无法在vs代码上打开模拟器