Копировать некоторые данные с отношениями - PullRequest
0 голосов
/ 27 мая 2019

У меня есть проблема, мне нужно повторить выбранный опрос. Когда я нажимаю на кнопку, он должен повторить все данные из этого выбранного опроса.

Я новичок в Laravel, поэтому я не знаю, как это сделать. Но я уже пробовал некоторые вещи, но это не работает. и я не знаю почему. Кто-нибудь может мне помочь ??

Контроллер открытых функций:

public function copySurvey( Manager $fractal, SurveyTransformer $surveyTransformer ) {
    // Copy function (Alleen nog niet volledig hier nog even aanwerken.)
    $copy = Survey::first();

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

    // save it
    $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 голосов
/ 27 мая 2019

Вы должны повторить трудные отношения после сохранения:

$original = Survey::first();

$new = $original->replicate();
$new->sid = 123456;
$new->save();

foreach($original->groups as $group){
    $new->groups()->attach($group);
}

foreach($original->questions as $question){
    $new->questions()->attach($question);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...