我正在开发一个显示航班的应用。在fligh选择工作流程中,用户应首先选择目的地。在我的#34;选择目的地视图"我在我的数据库中显示所有国家/地区。他们中的一些人没有航班。我试图只展示有航班的国家,为了实现这一目标,我已经写过这种方法:
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"
}
}
我不知道这些钥匙的位置,&#34; 0&#34;和&#34; 2&#34;来自。而且我认为大多数都有更好的解决方案。而且,我也更喜欢这样的回答:
{
"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"
}
你们有什么想法吗?或者你觉得我这样做很好吗?
答案 0 :(得分:2)
将flights
关系添加到您的Destination
模型:
public function flights()
{
return $this->hasMany(Flight::class);
}
然后仅使用destinations
查询flights
,如:
$destinations = Destination::has('flights')->get();
您的getDestinationsWithFlights
函数应该类似于:
public function getDestinationsWithFlights()
{
return Destination::has('flights')->get()->toArray();
}