В документации Laravel Eloquent есть методы например Model::UpdateOrCreate()
, но нету примеров, как использовать эти методы для множества строк, в stackoverflow нашел пример, где предлагается для множества строк использовать цикл:
foreach($users as $user){
User::create($user);
}
Насколько целесообразно использовать query запрос в цикле ?
Может ли быть, что ларавел использует асинхронные технологии, например, queue или другие возможности которые разрешают использовать такие запросы внутри цикла ?
На гитхабе обсуждали это: https://github.com/laravel/framework/issues/1295
Следующий код создает столько запросов сколько итераций.
foreach ($users as $user) {
User::create($user);
}
Вот что писал про это автор Laravel:
It would be relatively easy to do this; however, events would not be fired. The only thing it would be buying you is the timestamp insertion.
Перевод: это было бы относительно легко сделать; однако события не будут запущены. Это только поможет вставлять timestamp автоматически.
и это:
Honestly just use the query builder for this. Will be much more efficient and makes more sense.
Перевод: Честно говоря, просто используйте построитель запросов для этого. Будет намного эффективнее и иметь больше смысла.
Один из пользователей предложил вариант ниже, но он тоже не генерирует события:
abstract class Model extends BaseModel
{
/**
* @return string
*/
public static function table()
{
return with(new static)->table;
}
/**
* Insert each item as a row. Does not generate events.
*
* @param array $items
*
* @return bool
*/
public static function insertAll(array $items)
{
$now = \Carbon\Carbon::now();
$items = collect($items)->map(function (array $data) use ($now) {
return $this->timestamps ? array_merge([
'created_at' => $now,
'updated_at' => $now,
], $data) : $data;
})->all();
return \DB::table(static::table())->insert($items);
}
}
Пример использования:
Administrator::insertAll([
['name' => 'Zane'],
['name' => 'Rob'],
]);
Источник кода
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
В шаблоне имеется следующий код, выводящий 6 последних новостей:
друзья! У меня реализовано пару парсеров, который проходят капчу и тянут информацию, что занимает очень много времениОсобенно, если на сайте...
Работаю с библиотекой PHPExcel в Wordpress нужно прочесть данные из excel файла, взял отсюда - https://packagistorg/packages/phpoffice/phpexcel Получаю ошибку
делал новый сайт, и переносил обработчик для формы с старого, на старом все работает, когда перенёс на новом перестали доходить письма на почту,...