Я использую Laravel 5.4. Я сделал функцию для двоих (вставить и обновить).
Если идентификатор не найден, он попадет на вставку, иначе будет применен метод обновления.
Все работает хорошо, но частый запрос на обновление не обновляет таблицу. Метод для Angularjs http.post метод
Функция контроллера:
public function postUserJson(Request $req)
{
//return "check". $req->input('id');
if ($req->input('id')=='') {
$user = new User();
$user->UserName = $req->input('username');
$user->Password = $req->input('password');
$user->save();
return "inserted";
} else {
$check= User::find($req->input('id'));
// $check->ID = $req->input('id');
$check->UserName = $req->input('username');
$check->Password = $req->input('password');
$check->save();
return "updated".$check;
}
}
Это (return "updated".$check;
) код возврата в консоли:
updated{"ID":13,"UserName":"sadek","Password":"456"}
Предыдущее имя пользователя было sade. После редактирования я получил отредактированное имя с помощью метода sadek после save (). Но когда я обновляю это шоу Садэ
Как я могу обновить таблицу?
вы отправляете данные в формате json. Ваша строка запроса не совпадает. увидеть
"UserName" != username
Password != password
убедитесь в этом.
Eloquent предоставляет метод для обработки всей вышеописанной логики, он называется updateOrCreate()
Из документов:
Вы также можете столкнуться с ситуациями, когда вы хотите обновить существующую модель или создать новую модель, если она не существует. Laravel обеспечивает updateOrCreate
способ сделать это за один шаг. Словно firstOrCreate
метод, updateOrCreate
сохраняется модель, поэтому нет необходимости звонить save()
$flight = App\Flight::updateOrCreate(
['departure' => 'Oakland', 'destination' => 'San Diego'],
['price' => 99]
);