Запрос, возвращающий каждую строку null в laravel

Я пытаюсь создать чат-приложение, используя laravel echo и pusher, все работает, но данные, которые возвращаются в базу данных, либо нулевые, либо значение по умолчанию, вот код

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

NB: когда я ставлю вставку () вместо создания в запросе, данные проходят через базу данных нормально, но есть ошибка в трансляции


person Ali Khiti    schedule 11.06.2018    source источник
comment
Попробуйте проверить условия в своих запросах.   -  person Safoor Safdar    schedule 11.06.2018


Ответы (2)


Пробовали ли вы создать такое сообщение? вместо использования модельного события?

$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.

person Devin Gray    schedule 11.06.2018
comment
Я попробовал, и это сработало, спасибо, но я тестирую это приложение только для того, чтобы узнать, почему я до сих пор не хочу знать, почему create() не работает, хахах - person Ali Khiti; 11.06.2018

Создайте метод проверки заполняемых атрибутов в модели Laravel. Вы должны записать все столбцы в заполняемые, а затем использовать метод создания.

Второе решение — использовать технологию Active Record. Ответ @Devin Grey полезен для использования Active Record.

Дополнительную информацию см. на странице https://laravel.com/docs/5.6/eloquent#mass-assignment

person Gautam Patadiya    schedule 11.06.2018
comment
У меня был каждый столбец в защищенном заполняемом - person Ali Khiti; 11.06.2018