Laravel - красноречивый: метод подготовки вставки в модели - PullRequest
0 голосов
/ 24 мая 2018

Я работаю с Laravel 5.3 с механизмом красноречивых отношений.

В моих контроллерах есть методы, которые вставляют данные в несколько связанных таблиц.Этот метод повторяется в нескольких местах.

TradePartnerData::create([
    'trade_partner_data_type' => $dataType,
    'trade_partner_id' => $id,
    'value' => $value
]);

Я хочу оптимизировать это, и мне интересно, смогу ли я подготовить метод в моей модели, который берет на себя задачу вставки данных в базу данных?

/*method in controller that I want*/
$model = new TradePartnerData();
$model->makeSpecialInsert($dataType, $id, $value)

Тогда в контроллере мне нужно только вызвать метод модели с надлежащими параметрами, не записывая ключей модели.

Пока я просто сохраняю в своих моделях eloquent отношения между таблицами.Итак, вопрос в том, как подготовить метод вставки в модель, чтобы я мог использовать:

$model->makeSpecialInsert($dataType, $id, $value)

Заранее спасибо!

1 Ответ

0 голосов
/ 24 мая 2018

Если у вас есть несколько таких контроллеров, звучит так, как будто вы захотите настроить структуру класса родительского контроллера, чтобы упростить задачу.Тем не менее, вот что вы можете бросить в модель:

public static function quickSave($dataType, $id, $value)
{
  return \App\TradePartnerData::firstOrCreate(
    ['trade_partner_data_type' => $dataType],
    ['trade_partner_id' => $id],
    ['value' => $value]
  );
}

И вызов:

  $model = TradePartnerData::quickSave($dataType, $id, $value);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...