我的数据库中有这些表,即" airport" " route","机场"的ID是" route"中的外键(即原点,目的地)。
Airport
+-------+-------------+-----------------------+
| id | airportcode | Location |
+-------+-------------+-----------------------+
| 1 | CEB | Cebu |
| 2 | MAN | Manila |
+-------+-------------+-----------------------+
Routes
+-------+-------------+-----------------------+
| id | Origin | Destination |
+-------+-------------+-----------------------+
| 1 | 1 | 2 |
| 2 | 2 | 1 |
+-------+-------------+-----------------------+
到目前为止,这是我在Controller中的查询,它只返回" Origin,Destination"
DB::table('airport')
->join('route', 'airport.id','=','route.Origin')
->join('route', 'airport.id','=','route.Destination')
->select('route.Origin', 'route.Destination')
->get();
我想做的是:
SELECT 'airport.Location' from airport, route WHERE 'route.Origin' = 'airport.id' AND 'route.Destination' = 'airport.id"
。
任何建议都可以!
答案 0 :(得分:0)
那么 - 您想要为特定机场ID提取模型,但前提是它是否到达指定目的地?
您的第一个查询只返回两个列,就像您告诉它返回的那样
您可以通过以下方式轻松抵达机场:
Airport::find($id);
其中$ id是来自用户输入的id,例如,应该是键。 Find将返回一个集合
你也可以这样做:
Airport::where('id','=', $id)->first() //will return the first record - you could also use ->get() to return a collection
然后,如果您在机场模型中加入了 - >> hasMany,那么您可以这样做:
Airport::where('id','=', $id)
->with('routes')
->get()
将返回机场并附上相关路线模型
然后,您可以进一步采用该阶段,并通过以下方式查询关系:
Airport::find($id)->routes()->where('destination','=',$dest_id);
我认为只要您在模型中正确创建关系
,就可以做到这一点答案 1 :(得分:0)
如果您使用选择查询,请确保您已提及所需的所有字段...
it's only returning the "Origin, Destination"
,因为您在选择查询中仅提到了这两个。
DB::table('route')
->select('route.Origin', 'route.Destination','airport.Location')
->leftjoin('airport', function($join)
{
$join->where('airport.id',array('route.Origin','route.Destination'));
// I haven't used it, if any errors pls comment
})
->get();
希望这可以帮助你...