“PHP特性”;“方法不存在”;

“PHP特性”;“方法不存在”;,php,laravel,traits,Php,Laravel,Traits,我使用的是允许用户互相评论。因此,我需要同时使用可注释和CanComment特征。但是当我把它们一起使用时,我会得到一个错误 用户使用它的方式如下: use Commentable, CanComment { Commentable::comments insteadof CanComment; } foreach (User::all() as $user) { $receiver = User::where('id', '!=', $user->id)->inR

我使用的是允许用户互相评论。因此,我需要同时使用可注释和CanComment特征。但是当我把它们一起使用时,我会得到一个错误

用户使用它的方式如下:

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);
}
我正试图在这里发表如下评论:

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 trait有一个名为
getCanBeRated
的方法,但我得到一个错误,说它没有。为什么会发生这种情况?

您出现此错误是因为您试图在集合上使用此方法,而不是在
用户
对象上使用此方法。使用
first()
而不是
get()
来: