Laravel 8.x — лучший способ создания повторяющихся записей в mysql

#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