如何在laravel中获得与多个关系的最后记录

时间:2018-04-21 06:38:09

标签: laravel many-to-many

Please look over this image

电话:手机状态很多

Phone_status:手机很多

但我可以通过电话状态了解phone_status表中的最新状态

在手机型号中:

public function phoneStatus(){
  return $this->hasOne(PhoneStatus::class, 'phone_id','id')->latest();
}

现在,我希望过滤所有手机的最新状态为“已售出”。 有些事情喜欢:

[
 id=> 1,
 name=> 'iphone XYZ',
 phonestatus => [
    phone_status => 'sold'
 ]
]

我在控制器中的代码:

 $getProjectData = Phone::whereHas('phoneStatus', function ($query) use 
       ($status) {
            $query->latest()->where('status', 'like', '%'. $status.'%');
        })->with(['phoneStatus' => function ($query) {
            $query->orderBy('status', 'DESC');
        }]);

我的问题: 虽然最新状态是“恢复”,但$ getProjectData总是返回所有手机都有“已售出”状态。 请帮助我解决:(

1 个答案:

答案 0 :(得分:0)

在手机型号中添加此关系

public function allStatus(){
return $this->hasOne(PhoneStatus::class, 'phone_id','id');
}

在控制器中

$getProjectData = Phone::whereHas('allStatus', function ($query) use 
       ($status) {
            $query->where('status', 'like', '%'. $status.'%');
        })->with(['allStatus' => function ($query) {
            $query->where('status', 'like', '%'. $status.'%')->orderBy('status', 'DESC');
        }])->get();