2017-08-23 92 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);你都與他們的地位相對應的訂單。