Должен ли я разделить сводные таблицы для каждой функции в laravel? - PullRequest
0 голосов
/ 13 октября 2019

Я создаю приложение обзора продуктов, в котором есть 3 таблицы базы данных - Обзор - Категории - Филиалы

Сначала я создал сводную таблицу с 2 записями review_id & category_id и синхронизация прошла успешно. Позже я добавил еще один столбец "affiliate_id" в сводную таблицу, и синхронизация прошла успешно, но с несколькими записями. Позвольте мне объяснить

Вот мой контроллер для обзора -

 $result->affiliates()->sync($aff_ids);
 $result->category()->sync($product);

Приведенный выше код создает отдельные сводные записи -

Сводная таблица -

+-----------+-------------+--------------+
| review_Id | category_id | affiliate_Id |
+-----------+-------------+--------------+
|         1 | null        |   1          |
|         1 | 1           | null         |
+-----------+-------------+--------------+

Является ли приведенная выше сводная таблица правильной или я должен создать отдельные сводные таблицы для филиалов и категорий?

Если сводная таблица неверна и если нет необходимости в отдельных сводных таблицах, то я хочу достичь -

+-----------+-------------+--------------+
| review_Id | category_id | affiliate_Id |
+-----------+-------------+--------------+
|         1 |           1 |            1 |
+-----------+-------------+--------------+

В столбце affiliate_id может быть несколько записей, поэтому окончательныйя хочу получить результат -

+-----------+-------------+--------------+
| review_Id | category_id | affiliate_Id |
+-----------+-------------+--------------+
|         1 |           1 |            1 |
|         1 |           1 |            2 |
|         1 |           1 |            3 |
+-----------+-------------+--------------+

1 Ответ

0 голосов
/ 13 октября 2019

используйте withPivot;

в классе обзора модели

public function category()
{
    return $this->belongsToMany(Category::class)->withPivot('affiliate_id');
}

Тогда

foreach ($categories as $category) {
       $category_id_array[$category->id] = ['affiliate_id' => $affiliate->id];
}

//Insert into offence_photo table
$review->category()->sync($category_id_array, false);//dont delete old entries= false
...