laravel - Laravel Eloquent hasMany 具体关系行返回
问题描述
我有 2 个包含以下示例数据的表
培训班
ID | cl1 |
---|---|
1 | 一种 |
2 | b |
优惠
ID | course_id | 年 |
---|---|---|
1 | 1 | 2019 |
2 | 1 | 2020 |
3 | 2 | 2019 |
在各自的模型中,一对多关系被正常定义(工作正常)
我想仅通过所选关系选择具有特定年份价值的课程。
当我尝试以下代码时,它给了我正确的课程表行,但返回关系中提供表的 id 1 和 2。
Course::with(['offer'])
->whereHas('offer', function ($q) {
$q->where('year',2020);
})
->get();
我怎样才能只获得选定的关系(对于这个例子只有 id 2)。
仅供参考:由于其他一些需要,我不能使用Offer::with(['course'])
解决方案
您需要使用相同的逻辑进行急切加载
Course::with(['offer' => function ($query) {
$query->where('year', 2020);
}])->whereHas('offer', function ($query) {
$query->where('year', 2020);
})->get();
可以通过将闭包保存到变量来简化
Course::with(['offer' => $closure = function ($query) {
$query->where('year', 2020);
}])->whereHas('offer', $closure)->get();
推荐阅读
- android - IllegalStateException 崩溃:移动到第二个活动以使用使用 Kotlin 的 Searchview 时,搜索不能为空
- assembly - 6502 汇编二进制到 bcd - 在 x86 上可能吗?
- javascript - 如何更改 react-select Select 元素的边框?
- actions-on-google - last_simple 如何在 Actions Builder 中工作?
- codeceptjs - 将页面对象中的函数调用到另一个页面对象后,测试不会继续运行 - Codeceptjs
- html - Pug 预处理器和缩进的问题
- javascript - 如何从 URL 中删除 accesstoken
- python - 有没有办法将秘密 python 模块与种子一起使用?
- html - div元素的边界矩形的奇怪行为
- php - 从本地 php 服务器查询时,AWS RDS Postgres 非常慢