我是Laravel的新手,当我学习教程时,他们同时使用了两种方法,现在我对它们感到困惑。任何人都可以帮忙。
第一个
$model->related_model.
第二个
$model->related_model()
答案 0 :(得分:3)
第一种方法是访问关系值(模型或模型集合,取决于关系类型):
$company()->clients // returns a collection of your clients (hasMany relationship for example)
$company()->owner // returns the owner model (belongsTo relationship for example)
当您将其作为属性访问时,laravel会自动为您加载该关系(如果该关系以前已经加载过,则使用缓存的值)。
第二种方法,将返回关系本身,一个代表关系的对象和加载关系所需的查询:
$company->clients(); // instanceof Illuminate\Database\Eloquent\Relations\HasMany
当需要对关系进行一些复杂的查询时,请使用第二种方法,否则,请使用第一种。
使用第二种方法的示例:
$company->clients()->where('country', 'BR')->count()
请注意,这种方式要求您以get()
,first()
或本示例中使用的其他类似方法(例如count()
)结束链。