【问题标题】:Laravel Eloquent hasMany Specific Relationship Row ReturnLaravel Eloquent hasMany 具体关系行返回
【发布时间】:2021-11-06 12:11:54
【问题描述】:

我有 2 个包含以下示例数据的表

课程

id cl1
1 a
2 b

优惠

id course_id year
1 1 2019
2 1 2020
3 2 2019

在各自的模型中,一对多关系被正常定义(工作正常)

我想仅通过所选关系选择具有特定年份价值的课程。

当我尝试以下代码时,它给了我正确的课程表行,但返回关系中 offer 表的 id 1 和 2。

Course::with(['offer'])
            ->whereHas('offer', function ($q) {
                $q->where('year',2020);
            })                
            ->get();

我怎样才能只获得选定的关系(对于这个例子只有 id 2)。

fyi:由于其他需要,我不能使用 Offer::with(['course'])

【问题讨论】:

    标签: laravel eloquent


    【解决方案1】:

    您需要使用相同的逻辑来进行预加载

    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();
    

    【讨论】:

      猜你喜欢
      • 2014-12-22
      • 2016-03-17
      • 1970-01-01
      • 1970-01-01
      • 2015-12-22
      • 1970-01-01
      • 1970-01-01
      • 2014-10-29
      • 2013-11-14
      相关资源
      最近更新 更多