首页 > 解决方案 > 将 whereHas 中的值与父数据进行比较

问题描述

我正在尝试where在 a中使用whereHas并将此条件与父元素的值进行比较。

具体来说,我有一张events表格,我想将我的事件的结束日期与health_items元素的结束日期进行比较。

Event::where('team_id', Auth::user()->currentTeam->id)
           ->whereHas('animals', function ($query) use ($decodedId) {
              $query->where('animals.id', $animal_id)
           ->whereHas('health_items', function ($query) {
       $query->where('date_end', 'events.end');
    });
 })

在我的解决方案中,它不起作用,我尝试访问我的事件 table using ʻevents.end

标签: laraveleloquent

解决方案


你的问题是你断言date_end等于 string events.end。改为使用whereColumn()

Event::where('team_id', Auth::user()->currentTeam->id)
    ->whereHas('animals', function ($query) use ($decodedId) {
        $query->where('animals.id', $animal_id)
            ->whereHas('health_items', function ($query) {
                $query->whereColumn('date_end', 'events.end');
            });
    });

推荐阅读