#sql #laravel
#sql #laravel
Вопрос:
У меня есть проект, в котором мне нужно создать ‘n’ количество дубликатов записи. Это включает в себя дублирование записей в дочерней таблице. Прямо сейчас я вставляю дублирующуюся родительскую запись, а затем ВСТАВЛЯЮ соответствующие дочерние записи для этой таблицы.
Моя родительская таблица (portal_programs)
Моя родительская таблица (portal_programs)
try {
if ($programid) {
$programobj = Programs::find($programid);
if (!empty($eventobj)) {
$duplicateprogramobj = new Programs();
$duplicateprogramobj->title = $programobj->title;
.
.
.
$duplicateprogramobj->save();
$productsobj = AppModelsProduct::select('*')
->where('program_id','=',$programid)->get();
foreach($productsobj as $product)
{
$duplicateprod = new AppModelsProduct();
$duplicateprod->program_id = $duplicateprogramobj->id;
.
.
.
$duplicateprod->save();
}
}
}
} catch (Exception $ex) {
Log::critical($ex->getMessage());
}
Есть ли лучший / эффективный способ добиться того же?
Комментарии:
1. Если код работоспособен, все в порядке. Если вы пытаетесь достичь определенной философии дизайна в отношении вашего стиля кода, я думаю, это другой вопрос.
2. Это вопрос дизайна
3. Я не могу комментировать эффективность, но вы могли бы уменьшить количество строк кода, используя
replicate
метод eloquent для создания копии модели. laravel.com/docs/8.x/eloquent#replicating-models