我想对2个模型进行分页:Trip
hasMany
PartialTrip
。
Trip
型号:
public function PartialTrips()
{
return $this->hasMany('PartialTrip', 'main_trip_id');
}
棘手的部分是,在包含查询信息的对象中,我希望每个PartialTrip
都拥有它所拥有的Trip
。所以,f.e。:查询Trip
- >查询PartialTrip
whereMainTripId
=当前Trip
的ID - >分页(5)。
这样,当我列出它们时,部分行程将不会在数组对象的末尾,但它们中的每一个都将直接在其父行程之后。
更新
我这样做(就像测试::with('PartialTrips')
是否有效一样:
$trips = Trip::with('PartialTrips')
->select('id', 'driver_user_id', 'route_from', 'route_to', 'start_date')
->get();
var_dump(count($trips));
它只返回我所拥有的Trip
的数量(我计算了数据库中有多少行程和部分行程 )。
->toSql()
为我提供了以下内容:
"select 'id', 'driver_user_id', 'route_from', 'route_to', 'start_date' from 'trips'"
所以我猜::with('PartialTrips')
在这种情况下不起作用......
答案 0 :(得分:1)
这是trip_id
来自
请注意,Eloquent承担了关系的外键 基于型号名称。
更多细节:http://laravel.com/docs/4.2/eloquent#one-to-one
当您使用hasMany
关系without specific foreign
键时,假定模型使用trip_id
作为外键(表名+ id)。无论如何,你可以覆盖它。你的模型可能看起来像
//Trip model
public function PartialTrips()
{
return $this->hasMany('PartialTrip', 'main_trip_id'); // second parameter is your foreign key
}
更多详情:http://laravel.com/docs/4.2/eloquent#one-to-many
通过将trips
变量传递到您的视图并将其渲染为您,可以获得partial trips
$trips
@foreach ($trips as $trip)
<div> Your trip id: {{ $trip->id }}</div>
<div> -- Partial Trips </div>
@foreach ($trip->partialTrips as $partialTrip)
<div> Partial trip id: {{ $partialTrip->id }}</div>
@endforeach
@endforeach
with()
注意:当您使用$partialTrips
(急切加载)时,$trips
将嵌套在 WaitForSingleObject(hth1, INFINITE);
中。这就是为什么你在使用count($ trip)时只得到$次旅行的原因。但是你可以使用上面的代码获得partialTrips。