Laravel中访问模型关系的方式之间的差异

时间:2016-06-14 13:07:51

标签: laravel laravel-5 laravel-5.2

访问模型关系时,以下内容之间有什么区别:

$post->comments

或者

$post->comments()

3 个答案:

答案 0 :(得分:2)

https://laravel.com/docs/5.1/eloquent-relationships#one-to-one

  

一旦定义了关系,我们就可以检索相关记录   使用Eloquent的动态属性。动态属性允许您   访问关系的功能就像它们是定义的属性一样   模型

此:

$posts = $user->posts;

实际上与此相同:

$posts = $user->posts()->get();

像这样使用会导致获得关系实例:

$posts = $user->posts();

如果您想使用特定过滤器对其进行过滤,这可能很方便,因为您现在可以将查询构建器应用到它。

答案 1 :(得分:2)

使用$post->comments,您可以访问属于特定帖子的collection条评论。

另一方面,使用$post->comments(),您可以访问可查询的帖子模型的评论relation

答案 2 :(得分:0)

使用$post->comments(),您的对象为Illuminate\Database\Eloquent\Relations\{relationType}(例如BelongsToMany)

但使用$post->comments时,您的对象为Illuminate\Database\Eloquent\Collection