我有这样的关系:
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();
}
}