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将创建该类的实例并对其调用查询方法。