例如:使用Laravel的ORM - 速記與速記之間有什麼區別?
return Product::first()->BaseProduct->Products
作品,而
return Product::first()->BaseProduct()->Products()
不,我也得到一個BadMethodCallException
。
我知道這兩條線之間存在顯着差異,但是有什麼區別,它是如何工作的?
例如:使用Laravel的ORM - 速記與速記之間有什麼區別?
return Product::first()->BaseProduct->Products
作品,而
return Product::first()->BaseProduct()->Products()
不,我也得到一個BadMethodCallException
。
我知道這兩條線之間存在顯着差異,但是有什麼區別,它是如何工作的?
我假設BaseProduct()和Products()在您的模型中都是關係?調用Products()不會返回雄辯的對象,它會返回hasMany或belongsToMany(Relation of的子對象)對象。
調用產品而不是產品()會觸發一個神奇的get方法。這個神奇的get調用Relation對象的getResults()方法。這樣你就可以找回產品模型的集合。這通常是你應該處理關係的方式。
換句話說:
BaseProduct::first()->Products == BaseProduct::first()->Products()->getResults()
我建議你看看source code
優秀,感謝了一堆。 –