问题描述
我正在跟这个图书馆聊天,我在其中使用在线状态
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
不同