Повторить больше таблиц Laravel - PullRequest
0 голосов
/ 21 мая 2019

Следующая проблема заключается в том, что мне нужно скопировать несколько таблиц. Сейчас я не очень знаком с Laravel, но я уже что-то пробовал. Так что моя функция сейчас скопировала только 1 таблицу. Это должно называться больше:

  • lime_groups
  • lime_permissions
  • Lime_questions и т.д ....

Так может ли кто-нибудь помочь мне с этим?

public function copySurvey( Manager $fractal, SurveyTransformer $surveyTransformer ) {
        $copy = Survey::first();

        // copy all atributes
        $newsurvey = $copy->replicate();

        // save
        $newsurvey->save();
}

Итак, я ожидаю, что он скопирует выбранный. Но он только копирует эти данные. Он не копирует другие связанные таблицы

Модель в отношениях:

 public function accuracy() {

    return $this->hasOne( 'App\Models\LimeSurvey\Accuracy', 'survey_id', 'sid' );
}

public function groups() {

    return $this->hasMany( 'App\Models\LimeSurvey\Group', 'sid', 'sid' )->orderBy('gid', 'asc')->orderBy('group_order', 'asc');
}

public function questions() {

    return $this->hasMany( 'App\Models\LimeSurvey\Question', 'sid', 'sid' )->orderBy('gid', 'asc')->orderBy('question_order', 'asc');
}

public function parentQuestions() {

    return $this->hasMany( 'App\Models\LimeSurvey\Question', 'sid', 'sid' )->where('parent_qid', '=', 0)->orderBy('gid', 'asc')->orderBy('question_order', 'asc');
}

public function languages() {

    return $this->hasMany( 'App\Models\LimeSurvey\Language', 'surveyls_survey_id', 'sid' );

1 Ответ

0 голосов
/ 21 мая 2019

Вам придется сделать это вручную,

Попробуйте этот код:

public function copySurvey( Manager $fractal, SurveyTransformer $surveyTransformer ) {
    $copy = Survey::first();

    //copy attributes
    $newsurvey = $copy->replicate();

    foreach($copy->languages() as $language)
    {
        $newsurvey->languages()->attach($language);
    }

    foreach($copy->parentQuestions() as $question)
    {
        $newsurvey->parentQuestions()->attach($question);
    }

    foreach($copy->accuracy() as $acc)
    {
        $newsurvey->accuracy()->attach($acc);
    }

    foreach($copy->questions() as $question)
    {
        $newsurvey->questions()->attach($question);
    }

    foreach($copy->groups() as $group)
    {
        $newsurvey->groups()->attach($group);
    }

    // save
    $newsurvey->save();
}

Предполагается, что ваши отношения доступа равны groups(), permissions(), questions()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...