查询返回 laravel 中的每一行 null



我正在尝试使用 laravel echo 和 pusher 构建一个聊天应用程序,一切正常,但返回到 databse 的数据要么为 null 要么是默认值,这是代码

public function sendMessage(Request $request){
$conID = $request->conID;
$message1 = $request->message;
$user = Auth::user();
$fetch_userTo = DB::table('messages')
->where('conversation_id', $conID)
->where('user_to', '!=', Auth::user()->id)
->get();
$userTo = $fetch_userTo[0]->user_to;
$message = Message::create([
'user_from' => Auth::user()->id,
'user_to' => $userTo,
'conversation_id' => $conID,
'message' => $message1,
]);
if($message) {
$userMsg = DB::table('messages')
->join('users', 'users.id','messages.user_from')
->where('messages.conversation_id', $conID)->get();
broadcast(new MessagePosted($message))->toOthers();
return $userMsg;
}
}

注意:当我在查询中输入 insert(( 而不是创建时,数据通常会通过数据库,但广播中出现错误

您是否尝试过创建这样的消息? 而不是使用模型事件?

$message = new Message;
$message->user_from = Auth::user()->id;
$message->$user_to = $userTo;
$message->conversation_id = $conID;
$message->message = $message1;
$message->save();

通过这种方式,您可以拥有更多的控制权,即

if($message->save()) { ... }

或者您可以将整个事情包装在一个事务中?

确保您的消息模型允许要在$fillable数组中添加的字段

在Laravel模型中创建方法检查可填充属性。您必须将所有列写入可填充列,然后使用创建方法。

第二种解决方案是使用活动记录技术。 @Devin Greay 答案有助于使用活动记录。

更多信息请访问 https://laravel.com/docs/5.6/eloquent#mass-assignment

相关内容

最新更新