Как получить товар после вставки и обновления в построителе запросов - PullRequest
0 голосов
/ 18 января 2019

Я пытаюсь получить тот же результат, что и в Eloquent, когда создание и обновление вернет модель обратно.

В случае построителя запросов, как я могу вернуть модель, когда insert возвращает логическое значение, а update возвращает идентификатор обновленной строки?!?!?

Например: DB::table('users')->insert( ['email' => 'john@example.com', 'votes' => 0] );

Вернет логическое значение, вместо этого я ищу, чтобы получить созданного пользователя, то же поведение с User::create().

DB::table('users')->update() вернет идентификатор обновленной строки, опять же, я хочу, чтобы обновленная строка была похожа на объект с User::update().

Я знаю, что insertGetId() даст мне идентификатор, когда я использую insert(), но я не хочу делать дополнительный шаг, чтобы использовать идентификатор и найти строку.

Кроме того, для обновления я не хочу использовать идентификатор, который update() возвращает, чтобы использовать его для поиска строки.

Имеет ли это какой-то смысл?

1 Ответ

0 голосов
/ 18 января 2019

Используйте insertGetId() вместо insert() и затем find() модель.Например:

$id = DB::table('users')->insertGetId(['name' => 'Ivanka', 'email' => 'ivanka@ivanka.com']); 
$user = User::find($id);

При обновлении у вас есть id, поэтому просто find() it: User::find($id).

Документация, объясняющая, как работает insertGetId(): https://laravel.com/docs/5.7/queries#inserts

...