例如,我有一個產品,我有一個BaseProduct。如何從Laravel的hasMany()關係中獲取所有結果?
在模型的產品,我指定了以下內容:
//In class Product
public function BaseProduct()
{
return $this->belongsTo("BaseProduct", "BaseProductId");
}
在BaseProduct,我已經指定了以下關係:
//In class BaseProduct
public function Products()
{
return $this->hasMany("Product", "ProductId");
}
如果我選擇產品,如下所示:
$Product::first()
我可以通過執行以下操作獲取BaseProduct:
$Product::first()->BaseProduct()->get();
非但沒有從結果的數組,我怎麼會得到BaseProduct的Model
,這樣我就可以得到所有BaseProduct的孩子,這意味着必須與這個外鍵的所有產品BaseProduct。我試過BaseProduct()->all();
,但它不是一個有效的方法。
編輯:
我創建的功能如下調用鏈 - 但是這太可怕了。
return BaseProduct::find(Product::first()->BaseProduct()->getResults()['BaseProductId'])->Products()->getResults();
最後編輯:
我在BaseProduct
模型犯了一個錯誤。在Products()
函數中,我指定了return $this->hasMany("Product", "ProductId");
,其中ProductId
應該是BaseProductId
。
我固定的之後,我可以成功地使用:
Product::first()->BaseProduct->products;
正如謝赫Heera曾解釋。
類似於:$ product-> BaseProduct() - > first() - > products? – JustinHo
根據[文檔](http://laravel.com/api/class-Illuminate.Database.Eloquent.Relations),由於'BaseProduct()'返回一個'BelongsTo'對象,導致'BadMethodCallException'不幸。 BelongsTo.html) –