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

Php Laravel,使用模型方法作为属性,php,laravel,laravel-5,Php,Laravel,Laravel 5,我是新来的拉雷维尔和玩它。对不起,如果这是一个愚蠢的问题。我就是搞不懂雄辩的关系是如何运作的。例如: // we have posts and comments related to them class Post extends Model { public function comments(){ return $this->hasMany(Comment::class); } } 现在我们可以这样做来获取指定帖子的评论: $comments = $p

我是新来的拉雷维尔和玩它。对不起,如果这是一个愚蠢的问题。我就是搞不懂雄辩的关系是如何运作的。例如:

// 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类而不在带有“use”语句的文件头调用它。(使用App\Comments)


谢谢。

问题1的答案:Laravel使用magic方法作为属性访问该方法,该属性在内部调用许多函数以获得关系。你可以检查代码

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

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

对于第二个问题:如果类位于同一目录中,则不必显式地编写
USE
语句
Comment
类位于同一个
APP
目录中,因此它可以正常工作而不会导致错误


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

,感谢您快速而完美的回答。第一个问题没问题。对于第二个问题,我的意思是:我可以在hasMany方法中使用'Comment:class'。但我并没有用“use”语句来调用这个类。如何在“Post”模型中定义它。如果您不
使用App\Comment
并调用
Comment::class
,则最终会出现错误。因此,您可以将该类路径作为字符串传递,laravel将创建该类的实例并对其调用查询方法。