Коллекция сводных таблиц не обновляется после синхронизации - PullRequest
0 голосов
/ 30 мая 2019

Я заново внедряю код для онлайн-журнала в Laravel 5.8 / MySQL. У меня есть таблица пользователей и таблица документов, которые имеют отношение многих ко многим. Я использую jQuery / Ajax для изменения списка авторов для данной статьи, по сути, используя sync () для загрузки обновленного списка авторов. Сводная таблица содержит столбец целых чисел, определяющий положение этого автора в списке авторов. У меня есть код работает, поскольку он корректно обновляет БД, за исключением того, что коллекция авторов не обновляется после синхронизации ().

Я обошел проблему, создав новое соединение с БД, но я чувствую, что должен быть более эффективный способ сделать это.

Соответствующие разделы моделей:

Бумажная модель

    public function authorCollection()
    {
        return $this->belongsToMany('App\Models\User', 'paperauthors', 'paper_id', 'author_id')->withPivot('notes','authorNum');
    }

Модель пользователя

    public function papers()
    {
        return $this->belongsToMany('App\Models\Paper', 'paperauthors', 'author_id', 'paper_id')->withPivot('notes','authorNum');
    }

Код для обновления списка авторов:

    $sync = array();
    // set up array for the sync operation, $authors is derived from the Ajax POST request
    foreach($authors as $auth) {
         $sync[$auth->id] = ['authorNum'=>intval($auth->authorNum)];
    }
    $paper->authorCollection()->sync($sync);
    $paper->save();
    // $paper->authorCollection still has the old data unless I add the following line
    $paper = Paper::where('id',$request->id)->first();

Я бы ожидал, что коллекция будет содержать обновленные данные автоматически - есть ли функция, которую я могу использовать для ее обновления, или мне нужно восстановить соединение?

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