Laravel Eloquent如何得到所有的父母



我有这样的关系:

DB关系

我的模型中有一个代码,它只为我检索一个父级:

public function AllParents()
{
return $this->belongsToMany($this, 'parent', 'product_id', 'parent_id')
->select('parent', 'name');
}

我把它放在我的控制器里,就像这样:

private function product(Product $product)
{
return $product->Product()
->with('AllParents')
->get();
}

最后我需要这样的数据:

Product1/Product_2/Product_3

我想我需要一个循环,但如何在Eloquent中做到这一点?

只需更改关系即可。您提到的数据透视表名称有误。

public function AllParents()
{
return $this->belongsToMany(Product::class, 'Product_parent', 'product_id', 'parent_id') ->select('parent', 'name');
}

然后你就可以访问

AppModelsProduct::with('AllParents')->get()

在您的产品模型中。你已经定义了这样的关系。

public function allParents()
{
return $this->belongsToMany(Product::class, 'product_parents', 'product_id', 'parent_id')->select('name');
}

而且,在控制器中,你可以让所有的父母都充满渴望。

Product::with('allParents')->find($productId);

而且,在View中,您可以使用foreach循环来迭代每个父对象。

@foreach ($product->allParents as $parentProduct)
{{ $parentProduct->name }}
@endforeach

我确实喜欢这样:我修改了我的控制器

private function product(Product $product)
{
$allParents = [];
$parent = null;
$parent->$product->Product()->with('AllParents')->first()->id;
while ($parent != null) {
array_push($allParents, Product::all->find($parent));
$parent = Product::all()->find($parent) - first();
}
}

最新更新