laravel 与 uuid 的同步方法

laravel sync method with uuid

我有 2 tables categoriesposts 第三个 table category_posts 是枢轴 table 来关联这两个 tables.

问题

问题是我使用 uuid 作为我的 table,当新行添加到 category_posts 时它没有得到 uuid 所以第二行会抛出错误,因为 ID 不是唯一的(两者都是空的)。

我正在寻找的是一种在我的同步方法中添加 uuid 的方法。

$post->categories()->sync($request->input('category_id'), false);
我使用的

uuid 包是 goldspecdigital,它可以使用此代码

生成新的 uuid
\Ramsey\Uuid\Uuid::uuid4()->toString()

问题

如何将生成 uuid 代码添加到我的同步方法中,以便在它们添加到数据库时为每一行创建 uuid?

PS

我试过这样的代码,但显然没有成功,所以我在这里问:)

$post->categories()->sync([['id' => \Ramsey\Uuid\Uuid::uuid4()->toString()], $request->input('category_id'), false]);

你能试试这个吗:

$category_ids = (array) $request->input('category_id');

foreach( $category_ids as $category_id ) {
   $data_to_sync[ $category_id ] = [ 'id' => \Ramsey\Uuid\Uuid::uuid4()->toString() ];
}

$post->categories()->sync( $data_to_sync, false );

这基本上是一种通过同步方法将附加数据传递给数据透视表 table 的方法。但我不确定它是否适用于主 ID。

如果它不起作用请告诉我