例如:
return Product::first()->BaseProduct->Products
有效,而
return Product::first()->BaseProduct()->Products()
没有,我得到BadMethodCallException
。
据我所知,这两行之间存在显着差异,但差异是什么,它是如何运作的?
答案 0 :(得分:3)
我假设BaseProduct()和Products()都是模型中的关系?调用Products()不会返回有说服力的对象,它将返回hasMany或belongsToMany(Relation of children)对象。
调用Products而不是Products()会触发魔法get方法。这个魔术get调用Relation对象的getResults()方法。这样您实际上可以获得产品模型的集合。这通常是您应该处理关系的方式。
换句话说:
BaseProduct::first()->Products == BaseProduct::first()->Products()->getResults()
我建议您查看source code