【问题标题】:Query returning every row null in laravel查询在laravel中返回每一行null
【发布时间】:2018-06-11 07:19:15
【问题描述】:

我正在尝试使用 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 时,数据正常通过数据库,但广播时出错

【问题讨论】:

  • 尝试在您的查询中测试条件。

标签: laravel laravel-5 pusher


【解决方案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()) { ... }

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

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

【讨论】:

  • 我试过了,谢谢,但我正在测试这个应用程序只是为了了解这就是为什么我仍然不知道为什么 create() 不起作用哈哈
【解决方案2】:

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

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

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

【讨论】:

  • 我确实将每一列都放在了受保护的可填充中
猜你喜欢
  • 1970-01-01
  • 2020-09-07
  • 1970-01-01
  • 2016-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-02
  • 1970-01-01
相关资源
最近更新 更多