调用未定义的方法App \ User :: messages“,例外:” BadMethodCallException

问题描述

我正在跟这个图书馆聊天,我在其中使用在线状态

composer require beyondcode/laravel-websockets

每当我发送消息控制台时,在我的chatcontoller中向我显示错误

Call to undefined method App\User::messages()",exception: "BadMethodCallException

我的控制器

class ChatController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth');
    }

    public function index()
    {
        return view('chats');
    }

    public function fetchMessages()
    {
        return Message::with('user')->get();
    }

    public function sendMessage(Request $request)
    {
        $message = auth()->user()->messages()->create([
            'message' => $request->message
        ]);

        broadcast(new MessageSent($message->load('user')))->toOthers();

        return ['status' => 'success'];
    }

User.PHP

public function messages()
    {
        return $this->hasMany(Message::class);
    }

Message.PHP

class Message extends Model
{
    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $table = 'messages';

    protected $fillable = ['message'];

    public function user()
    {
        return $this->belongsTo(User::class);
    }
}

为什么我的消息没有传递给其他用户

解决方法

更改此行

    $message = auth()->user()->messages()->create([
        'message' => $request->message
    ]);

    $user = User::find(auth()->id);
    $message = $user->messages()->create([
        'message' => $request->message
    ]);

我相信auth()-> user();与User :: class

不同