我知道问题标题不是很清楚,但请阅读完整的问题,因为我需要帮助。
我有三张桌子......
关系是这样的......
Offer.php
public function vehicle () {
return $this->belongsTo(Vehicle::class);
}
Vehicle.php
public function trims () {
return $this->hasMany(Trim::class);
}
public function offers () {
return $this->hasMany(Offer::class);
}
Trim.php
public function vehicle () {
return $this->belongsTo(Vehicle::class);
}
在单一优惠中,我可以访问$offer->vehicle
但是如何访问此获取的车辆的修剪?我试过这个$offer->vehicle->trims
而且它没有用。它应该有效,因为Trims与Vehicle有关。
感谢。
答案 0 :(得分:0)
我试过这个$ offer-> vehicle->修剪它不起作用。
“不工作”是什么意思?
trims()
不会返回单个实例,而是一个迭代器,您必须以适当的方式迭代或访问。
检查:https://laravel.com/docs/5.5/eloquent-relationships#one-to-many
$comments = App\Post::find(1)->comments;
foreach ($comments as $comment) {
//
}
答案 1 :(得分:0)
您可以获取实例的相关模型,如。
Offers::with('vehicle.trims')->find($id);
如果你想走很长的路,你可以试试。
Offers::with(['vehicle' => function($query){
$query->with('trims');
})->find($id);
希望这有帮助。
答案 2 :(得分:0)
您还可以使用预先加载查询 - 您可以传入一个闭包来处理对加载内容的内容的查询:
$result = Offer::with(['vehicle' => function($query) {
$query->with('trims');
}])->get();