0

I am following this library for chat and i use presence channel in it

composer require beyondcode/laravel-websockets

whenever i send a message console show me this error in my chatcontoller

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

my controller

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);
    }
}

why my message is not delivering to other user

1 Answers1

1

change this line

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

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

I believe auth()->user(); is different than the User::class

Cameron
  • 532
  • 3
  • 9