Как firstOrNew ищет записи в базе данных? - PullRequest
0 голосов
/ 13 марта 2020

У меня есть существующая запись в моей таблице:

company_id       first_name      last_name         age    
DCI-201812001      John             Doe            27

Что мне нужно, так это то, что если я вставляю новую запись, я хочу проверить, является ли запись новой или будет обновлена, отметив first_name, last_name и age.

Я использовал метод firstOrNew в Laravel, однако, когда пытался вставить запись с помощью ff. значения:

first_name = "John"
last_name = "Doe"
age = 29

Laravel firstOrNew считает, что это то же самое, что и моя существующая запись, указанная выше.

Это мой контроллер: enter image description here

Снимки экрана

  1. Это то, что извлекается, когда я вставляю запись, немного похожую на существующую запись. first_name = "John", last_name = "Doe", age = 29. Он восстановил существующую запись. Почему он извлекает существующую запись, когда столбец возраста отличается? Почему не учитывается возраст, который я прошел?

enter image description here




Пожалуйста, не обращайте внимания на вопрос № 2. Я понял, что если запись не найдена, он возвращает новый экземпляр модели.

Это то, что извлекается, когда я вставляю совершенно другую запись. first_name = "Felicita", last_name = "Ignacio", age = 25. Почему столбец возраста становится пустым, когда я передал значение 25 в столбце возраста в форме?

enter image description here

1 Ответ

0 голосов
/ 14 марта 2020

Ваши first_name, last_name и age должны быть такими:

[
    'first_name' => ...,
    'last_name' => ...,
    'age' => ...,
]

не такими:

['first_name' => ...],
['last_name' => ...],
['age' => ...],

Вы отправляете три отдельных массивы как три отдельных аргумента. Вы должны отправлять один массив в качестве аргумента first .

(Второй аргумент для firstOrNew - это дополнительный массив значений по умолчанию, который устанавливается, если выполняется часть orNew.)

...