2017-10-16 108 views
0

检索空我有3个数据库:Laravel 5.5嵌套关系

路线: id name

价格:

Id 
Route_id 
Car_id 

汽车:

id 
name 

我的路线

模型
public function rates() 
{ 
    return $this->hasMany('App\Rate', 'route_id'); 
} 

我给速率

public function car() { 
    return $this->belongsTo('App\Car','car_id'); 
} 

模型现在我需要访问车上关系,但是当我做

return $this->route->with('from','to','rates.car')->paginate(74); 

我得到空的车关系

{"id":1,"from_id":1,"to_id":2,"distance":400,"created_at":null,"updated_at":null,"from":{"id":1,"name":"\u0410\u043a\u043a\u043e","created_at":null,"updated_at":null,"lat":32.93310000000000314912540488876402378082275390625,"long":35.0827000000000026602720026858150959014892578125},"to":{"id":2,"name":"\u0410\u0440\u0430\u0434","created_at":null,"updated_at":null,"lat":31.261399999999998300381776061840355396270751953125,"long":35.21490000000000009094947017729282379150390625},"rates":[{"id":1,"route_id":1,"car_id":1,"rate":1123,"night_rate":1391,"car":null},{"id":5551,"route_id":1,"car_id":2,"rate":1123,"night_rate":1391,"car":null},{"id":11101,"route_id":1,"car_id":3,"rate":1123,"night_rate":1391,"car":null},{"id":16651,"route_id":1,"car_id":4,"rate":1123,"night_rate":1391,"car":null},{"id":22201,"route_id":1,"car_id":5,"rate":1123,"night_rate":1391,"car":null},{"id":27751,"route_id":1,"car_id":6,"rate":1123,"night_rate":1391,"car":null},{"id":33301,"route_id":1,"car_id":7,"rate":1123,"night_rate":1391,"car":null},{"id":38851,"route_id":1,"car_id":8,"rate":1123,"night_rate":1391,"car":null}]}, 

回答

0

根据我的理解,您尝试通过路线模型访问Car模型。

我注意到一些事情应该可以帮助您找到解决方案。

首先,我认为你应该使用belongToMany()函数反函数来代替。

public function car() { 
    return $this->belongsToMany('App\Car','Rates'); // Perhaps call the table something like routes_cars to more clearly define it's a pivot table 
} 

接下来我看到您正在尝试在$this()的上下文中使用模型函数。我假设你在模型中这样做?这个逻辑应该在控制器中,这可能会导致一些不希望的结果,但我不完全确定。当使用with()时,它看起来像你的参数不正确。您可以使用您在belongsToMany()

App/Route::with('car')->paginate(74); 

定义有了正确的关系设置你很少需要担心数据透视表函数名。如果您要在数据透视表中添加额外的信息,则可以使用laravel函数来帮助您在文档中执行此操作。

+0

$ this-> route用于具有构造函数的控制器。 –

+0

并且利率不被用作数据透视表,有两列我忘了写率和night_rate。但我想访问它嵌套,所以我可以在汽车上得到这样的汽车名称:{id:1,name:'economy'}。我举了一个例子 –

+0

它是一个数据透视表,因为它创建了另外两个表之间的关系。 它们可以包含其他数据。 https://laravel.com/docs/5.5/eloquent-relationships。搜索“检索中间表列”。 – hdifen