laravel обновляет базу данных несколькими записями

#php #laravel

#php #laravel

Вопрос:

Я новичок в Laravel. Я просто пытаюсь обновить полную строку таблицы mysql. Данные отправляются из формы. У меня обновляется только 2 записи, а остальные становятся нулевыми. Я уверен, что имена полей из контроллера соответствуют именам полей ввода в форме, а также в таблице mysql. Я также убедился, что поля перечислены в методе «fillable» в модели.

В контроллере пытался:

 public function approve($id, Request $request)
{
    $name = $request->input('name');
    $mark = $request->input('mark');
    $email = $request->input('email');
    $dob = date('Y-m-d H:i:s', strtotime($request->input('dob')));
    $country = $request->input('country');
     
    Certificate::where('id', '=', $id)
        ->update([
            'mark' => $mark,
            'name' => $name, 
            'dob' => $dob,
            'country' => $country
        ]);
}
 

Я также пытался

 $query = DB::update("UPDATE certificates SET name='$name', mark='$mark', dob='$dob', country='$country' WHERE id='$id'");
 

Пожалуйста, дайте мне знать, что я могу делать неправильно. Спасибо

Комментарии:

1. вы уверены, что получаете все поля из формы, и у вас нет проверки?

2. да, пока нет проверки

3. вы обновляете с помощью предложения where. Вы будете обновлять только те записи, которые удовлетворяют предложению where.

4. да, это то, что я пытаюсь сделать, но при идентификаторе строки = 2 я не могу обновить все записи в этой строке

5. $id Равно ли 2 при вызове функции?

Ответ №1:

используйте фасад БД, у меня была ошибка, похожая на эту, так что это то, что я использовал

 use IlluminateSupportFacadesDB;


 DB::table('certificates')
    ->where('id', $id)
    ->update([
    'mark' => $request->mark,
    'name' => $request->name, 
    'email' => $request->email,
    'dob' => $request->dob,
    'country' => $request->country
]);