Php 我是否应该为laravel中的每个功能分离数据透视表?

Php 我是否应该为laravel中的每个功能分离数据透视表?,php,laravel,pivot-table,Php,Laravel,Pivot Table,我正在构建review产品应用程序,其中有3个数据库表 -复习 -类别 -附属公司 首先,我创建了一个数据透视表,其中包含两个条目review_id和category_id&同步成功。后来我在pivot表中添加了另一列“affiliate_id”&同步成功,但有多个条目。让我解释一下 这是我的控制器,请检查- $result->affiliates()->sync($aff_ids); $result->category()->sync($product); 以上代

我正在构建review产品应用程序,其中有3个数据库表 -复习 -类别 -附属公司

首先,我创建了一个数据透视表,其中包含两个条目review_id和category_id&同步成功。后来我在pivot表中添加了另一列“affiliate_id”&同步成功,但有多个条目。让我解释一下

这是我的控制器,请检查-

 $result->affiliates()->sync($aff_ids);
 $result->category()->sync($product);
以上代码正在创建sperate pivot条目-

透视表-

+-----------+-------------+--------------+
| 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 |
+-----------+-------------+--------------+
使用withPivot

复习示范课

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


这看起来像是三元关系。Laravel不支持我应该为附属公司创建sperate数据透视表吗?包含审查id和附属机构id?问题是:审查是否与附属机构直接相关,或者它是否也需要类别才能使关系有意义,例如,您是否曾经对同一类别的多个附属机构进行过相同的审查?如果是的话,那么你确实有一个真正的三元关系,所以你可能需要保持这种结构,围绕你的观点,通过为附属公司创建数据透视表来修复它!我明白你的意思,但使用$categories没有意义,因为我只检索一个值-$request->get('categories');
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