我在刀片上檢索了一個產品專案的實體,所以當我這樣做時dd($product),我得到了這個結果:
![此集合實體上不存在屬性 [組]](https://img.uj5u.com/2022/03/15/861ee9d43af24aa29523801fdeb9adcc.png)
模型像這樣Product連接到GroupProduct模型:
public function groupproducts()
{
return $this->hasMany(GroupProduct::class,'product_id','id');
}
所以在group_product餐桌上,產品有這樣的習慣group_id:
![此集合實體上不存在屬性 [組]](https://img.uj5u.com/2022/03/15/a08f52370d78474e801efccace5c9a9f.png)
所以當我這樣做時,dd($product->groupproducts);我會正確地得到這個結果:
![此集合實體上不存在屬性 [組]](https://img.uj5u.com/2022/03/15/17f0165fe7aa48e38128fd882d1d7154.png)
然后在 Model GroupProduct,我添加了這兩個關系:
public function product()
{
return $this->belongsTo(Product::class,'product_id','id');
}
public function group()
{
return $this->belongsTo(Group::class,'group_id','id');
}
現在我需要訪問檢索到的組的名稱product_id,但是當我嘗試這個時:
dd($product->groupproducts->group->name);
我收到此錯誤:
此集合實體上不存在屬性 [組]。
然而,關系似乎被應用,它應該顯示組的名稱......
那么這里出了什么問題?我該如何解決這個問題?
更新#1:
控制器:
public function addAttribute(Product $product)
{
return view('admin.products.addAttribute', compact('product'));
}
uj5u.com熱心網友回復:
$product->groupproducts是產品的集合(陣列)。你可以做:
dd($product->groupproducts->first()->group->name);
這將從集合中獲取第一個元素,該元素是Group類的實體。
uj5u.com熱心網友回復:
你必須使用嵌套關系:
1-您可以通過以下方式在模型中使用它:
public function groupproducts()
{
return $this->hasMany(GroupProduct::class,'product_id','id')->with('group');;
}
2-您可以在控制器中使用它:
Products::with('groupproducts.group')->get()
參考
uj5u.com熱心網友回復:
您的產品模型與組產品模型的關系是一對多的。這意味著,即使只有一個結果,您也會收到一個集合。
您可以在自己的螢屏截圖中看到 的回傳值$product->groupproducts是包含 1 個專案的集合的實體。
如果您只想要第一個,您應該將您的關系更改為 a one to one。
但是,如果在這種特殊情況下只需要第一個,則應該在查詢實體上呼叫第一個,而不是在集合實體上呼叫。
所以$product->groupproducts()->first()->group->name。這樣您就不會從資料庫中加載 x 數量,而是僅加載 1,這要快得多。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/443820.html
下一篇:突出顯示搜索關鍵字
