PHP 特征 "Method does not exist"

PHP Traits "Method does not exist"

我正在使用 laravel-comment 让用户可以互相评论。因此,我需要同时使用 CommentableCanComment 特性。但是当我一起使用它们时,我得到一个错误。

用户是这样使用的:

use Commentable, CanComment {
    Commentable::comments insteadof CanComment;
}

我正在尝试播种这样的评论:

foreach (User::all() as $user) {
    $receiver = User::where('id', '!=', $user->id)->inRandomOrder()->get();
    $user->comment($receiver, $faker->text(100), 3);
}

即使 CanComment 特征有一个名为 getCanBeRated 的方法,但我收到一条错误消息说它没有。为什么会这样?

您收到此错误是因为您试图在集合上而不是在 User 对象上使用此方法。使用 first() 而不是 get():

$receiver = User::where('id', '!=', $user->id)->inRandomOrder()->first();