mysql Laravel ORM查询未显示正确的关系

nwlls2ji  于 2023-02-03  发布在  Mysql
关注(0)|答案(1)|浏览(142)

我正在处理laravel项目,当我给它where id时,我有一个查询,它给了我正确的关系,但当我使用其他条件时,它没有给我关系。
这是控制器查询

$dogsCheckedIn = Dog::with(['latestActiveVisit'])
                        ->whereNotNull('checked_in')
                        ->whereNull('checked_out')
                        ->orderBy('projected_out_date','asc');
// ->where('id', 21); gives relationship correctly but if i remove it shows the records but did not show me relationship

        if(Request::get('ag'))
            $dogsCheckedIn->where('appointment_group_id', intval(Request::get('ag')));
            $dogsCheckedIn = $dogsCheckedIn->get()  
            ->each(function($dogRecord) {
                $dogRecord->record = DogRecord::with('user')->where('dog_id',$dogRecord->id)->whereNotNull('weight')->orderBy('created_at','desc')->first();
            });

这是我的模型函数

public function latestActiveVisit()
    {
        return $this->hasMany(DogVisits::class, 'dog_id', 'id')
        ->whereNotNull('checked_in')
        ->whereNull('checked_out')
        ->select('id', 'created_at', 'dog_id')
        ->latest('created_at')->take(1);
    }
afdcj2ne

afdcj2ne1#

可能与条件添加到查询中的顺序相同。请尝试在添加其他条件之前添加关系的条件。
尝试将控制器查询更改为:

$dogsCheckedIn = Dog::with(['latestActiveVisit'])
->whereNotNull('checked_in')
->whereNull('checked_out')
->where(function($query) {
if(Request::get('ag'))
$query->where('appointment_group_id', intval(Request::get('ag')));
})
->orderBy('projected_out_date','asc')
->get()
->each(function($dogRecord) {
$dogRecord->record = DogRecord::with('user')->where('dog_id',$dogRecord->id)->whereNotNull('weight')->orderBy('created_at','desc')->first();
});

这应该允许您在添加其他条件之前添加关系的条件,这可能会解决问题。

相关问题