在laravel中返回每行返回null的查询

时间:2018-06-11 07:19:16

标签: laravel laravel-5 pusher

我尝试使用laravel echo和pusher构建聊天应用程序,一切正常但返回数据库的数据为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()而不是create时,数据会正常通过数据库,但广播中出现错误

2 个答案:

答案 0 :(得分:1)

您是否尝试过创建此类消息?而不是使用模型事件?

$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数组中添加的字段

答案 1 :(得分:0)

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

第二种解决方案是使用Active Record技术。 @Devin Greay的回答有助于使用Active record。

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