Laravel,使用模型方法作为属性

时间:2017-11-02 09:47:42

标签: php laravel laravel-5

我是Laravel的新手并且玩弄它。对不起,如果这是一个愚蠢的问题。我无法弄清楚雄辩的关系是如何运作的。例如:

// we have posts and comments related to them
class Post extends Model
{
    public function comments(){
        return $this->hasMany(Comment::class);
    }
}

现在我们可以这样做来获得指定帖子的评论:

$comments = $post->comments;

第一个问题是:这怎么可能。在Laravel中,声明为属性的方法的名称。

第二个问题是:我怎样才能使用Comment类而不在文件的头部调用它,并使用'声明。 (使用App \ Comments)

感谢。

2 个答案:

答案 0 :(得分:3)

对问题1的回答:Laravel使用魔术__get()方法作为属性访问该方法,该属性在内部调用许多函数来获取关系。您可以查看代码here

对问题2的回答:您可以将类路径作为字符串作为参数传递给关系,如

return $this->hasMany('App\Comments');

答案 1 :(得分:0)

第二个问题:如果您的类位于同一目录中,则不必显式编写USE语句 Comment类位于同一APP目录中,因此它将正常工作而不会引起错误。

在您的情况下,您的PostComment类必须位于App\命名空间中