vollthegreat
@vollthegreat
Laravel back-end outsource

Как правильно пользоваться updateOrCreate или firstOrCreate в Laravel?

Есть база данных с внутренними связями

URL->toMany Data->to many data_trans - название модели и отношение между ними

При вызове вьюшки, я захватываю данные в request
нужно записать их соответственно в нужные поля, если такие есть, если не созданы (нету data c url_ID или data_trans с data_id) то создать, в зависимости от текущей URL_ID которая есть в модели Data.

грубо база
URL
id, slug, head_title

DATA
id, url_id,img_url,

DATA_TRANS
id data_id local title content

в одной странице, много Data в одной Data много переводов с разными local
  • Вопрос задан
  • 4816 просмотров
Решения вопроса 1
erniesto77
@erniesto77
oop, rb, py, php, js
$data = $request->only('id', 'url_id', 'img_url');

// создаст или обновит запись в модели Data в зависимости от того 
// было ли найдено в модели Data поле url_id равное $request->url_id
Data::updateOrCreate(['url_id' => $request->url_id], $data);

// создаст запись в модели Data_trans 
// если  в модели Data_trans  не найдена запись с data_id равной $request->id
Data_trans::firstOrCreate(['data_id' => $request->id], [
    'data_id' => $request->id,
    'local' => '',
    'title' => '',
    'content' => '',
]); // возвращает найденную или вновь созданную запись


Проще говоря, updateOrCreate и firstOrCreate принимают в качестве параметров 2 массива. В первом массиве проверка на существование в таблице пары поле => значение, а во втором данные которые будем создавать или обновлять
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
26 апр. 2024, в 07:47
2000 руб./за проект
26 апр. 2024, в 06:46
1000 руб./в час
26 апр. 2024, в 05:31
1000 руб./за проект