#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
]);