2017-08-23 45 views
0

我想获取所有订单并将其与状态连接,但我只想每个订单的最后一个状态。我试图这样做,但我只获得第一个订单的状态,其余的没有。我该如何解决它?Laravel realtionships belongsToMany

static function actualKioskOrders() 
{ 
    $orders = Order::query(); 

    return $orders->with([ 
     'statuses' => function ($query) { 
      $query->orderBy('created_at', 'desc')->first(); 
     } 
    ]); 
} 

回答

3

在订单模型中添加此方法,我建议在模型类上进行查询。

public function status(){ 
return $this-> belongsToMany(Status::class); 
} 

public function latestStatus() 

    return $this->status()->latest()->first(); 
} 

+0

我想要所有的订单只有他们唯一的最后状态...和我的关系我belongsToMAny – wenus

+0

多数民众赞成如何你得到这一点,没有看到正确的。编辑 –

+0

好的,但是当我写在控制器中,像这样:$ orders = Order :: actualKioskOrders() - > get(); - 现在我有所有状态的所有订单,但是我希望每个订单都有最后一个状态 – wenus

0

我相信更容易的方式做这将是

$orders = Order::with('status')->orderBy('created_at', 'desc'); 

然后,如果你dd($orders);你都与他们的地位相对应的订单。