2016-08-03 81 views
1

我正在研究顯示航班的應用程序。在選擇工作流程中,用戶應該首先選擇一個目的地。在我的「選擇目標視圖」中,我顯示了數據庫中的所有國家/地區。其中一些沒有航班。我試圖表明只是飛行的國家,要實現這一點,我寫這個方法:Laravel檢查相關模型(更好的解決方案?)

public function getDestinationsWithFlights() 
    { 
     $destinations = Destination::all(); 
     $destinationsWithFlights = []; 

     for ($i = 0; $i < count($destinations) ; $i++) 
     { 
      if ($destinations[$i]->hasMany(Flight::class)->count() != 0) 
      { 
       $destinationsWithFlights[$i] = $destinations[$i]; 
      } 
     } 

     return $destinationsWithFlights; 
    } 

的響應

{ 
    "0": { 
     "id": 1, 
     "country": "argentina", 
     "created_at": "2016-08-03 13:56:36", 
     "updated_at": "2016-08-03 13:56:36" 
    }, 
    "2": { 
     "id": 3, 
     "country": "spain", 
     "created_at": "2016-08-03 13:56:36", 
     "updated_at": "2016-08-03 13:56:36" 
    } 
} 

我不知道這些鍵,「 0「和」2「來自。我認爲那裏最好有更好的解決方案。而且,我更喜歡響應是這樣的:

{ 
    "id": 1, 
    "country": "argentina", 
    "created_at": "2016-08-03 13:56:36", 
    "updated_at": "2016-08-03 13:56:36" 
}, 
{ 
    "id": 3, 
    "country": "spain", 
    "created_at": "2016-08-03 13:56:36", 
    "updated_at": "2016-08-03 13:56:36" 
} 

你們有什麼想法嗎?或者你認爲我做得很好?

回答

2

添加flights關係到你的Destination型號:

public function flights() 
{ 
    return $this->hasMany(Flight::class); 
} 

然後查詢只destinationsflights,如:

$destinations = Destination::has('flights')->get(); 

getDestinationsWithFlights功能應該是這個樣子:

public function getDestinationsWithFlights() 
{ 
    return Destination::has('flights')->get()->toArray(); 
} 
+0

也就是說究竟我需要什麼。我已經建立了關係,但是我不知道你可以將該方法添加到查詢中。謝謝!很多! –

相關問題