База данных не обновляется в laravel

Я думаю, что когда вы определяете String, вы определяете объект. Поэтому вам нужно использовать .equals(). Когда вы используете примитивные типы данных, вы используете ==, но с String (и любым объектом) вы должны использовать .equals().

0
задан HCK 10 March 2019 в 19:11
поделиться

2 ответа

Вся проблема в update функции

public function update(Request $request, $id)
{
    //
    $mock = Mock::find($request->id);
    return $mock->update([
        'subject' => $request->subject,
        'list' => $request->list
    ]);
}

Или, может быть,

public function update(Request $request, $id)
{
    return Mock::where('subject', $request->subject)->update([
        'list' => $request->list,
    ]);
}
0
ответ дан Davit 10 March 2019 в 19:11
поделиться

Проверьте ваш метод update:

public function update(Request $request, $id)
{
    // ...
    return Mock::where($subject, $subject)->update([ // <---------
        $subject => $request['list'], // <-------
    ]);
    // ...
}

В предложениях where первым параметром является имя столбца, а не значение. То же самое относится и к обновлению атрибутов. Проверьте эту строку:

Mock::where($subject, $subject)->/** */

Сделайте это вместо:

Mock::where('subject', $subject)->/** */

Кстати, я не использовал ваш способ получения данных запроса, но в случае, если он возвращает null значения, попробуйте этот подход:

$subject = $request->get('subject');

Наконец, при выполнении операции update результатом является boolean, а не обновленная запись. Итак, если вы ожидаете вернуть обновленный объект, сделайте это вместо:

public function update(Request $request, $id)
{
    Mock::find($id);
    $mock = Mock::where('subject', $subject)->first();
    $mock->update(['subject' => $request->get('list')]);

    return $mock->fresh();
}
0
ответ дан HCK 10 March 2019 в 19:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: