如何在Laravel中访问关系

时间:2018-06-14 06:46:53

标签: php laravel laravel-5 blaze

我知道问题标题不是很清楚,但请阅读完整的问题,因为我需要帮助。

我有三张桌子......

  • 优惠
  • 车辆
  • 饰件

关系是这样的......

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有关。

感谢。

3 个答案:

答案 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();
相关问题