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
  • Вопрос задан
  • 4921 просмотр
Решения вопроса 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 массива. В первом массиве проверка на существование в таблице пары поле => значение, а во втором данные которые будем создавать или обновлять
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы