关于使用自定义Pivot 中间表

我现在有一个 user 表

user_id, uuid, user_name ...

有一个 tag 表

tag_id , tag_name ...

有一个中间表 tag_user

 tag_id, user_uuid 

如果按正常的 tag_user 中的对应键是 tag_id 和 user_id, 并且 两个表主表都是 使用 id 作为主键.

实际 我的 user 表 使用 uuid 来作为其他所有相关数据的关联 , tag 的主键 也是 tag_id

我如何自定义Pivot 中间表

我的 User Model

class User extends Model implements AuthenticatableContract, AuthorizableContract, JWTSubject
{
    use Authenticatable, Authorizable, SoftDeletes;

    public function tags() {
        return $this->belongsToMany(Tag::class,'tag_user','tag_id','user_uuid')
                    ->using(TagUser::class);
    }
}

我的 Tag Model

class Tag extends Model
{
public function user() {
        return $this->belongsToMany(User::class)->using(TagUser::class);
    }
}

我的自定义 中间表 TagUser

use Illuminate\Database\Eloquent\Relations\Pivot;

class TagUser extends Pivot
{
    protected $fillable = [
        'tag_id',
        'user_uuid',
    ];

    protected $table = 'tag_user';

    public $timestamps = false;

    public function tag() {
        return $this->belongsTo(Tag::class, 'tag_id', 'tag_id');
    }

    public function user() {
        return $this->belongsTo(User::class, 'user_uuid', 'uuid');
    }

我现在如果要创建一个 User , 获得

[
'user_id' => 41,
'uuid' => '01297c21-5a63-3529-8a29-409e712e4bee'
]

创建一个 Tag 获得

[
'tag_id' => 1,
'tag_name' => '红色'
]

User 设置主键 uuid
Tag 设置主键 tag_id

然后我怎么使用User Model 来填入关联表

我使用

User::find(41)->tags()->attach(1)

但是这样插入表中数据自动把 user->uuid 转成整形了

tag_id | user_uuid
------    | ---------
1         | 1297
JellyBool
修改的评论也不能少于六个字哦!
RJustice
修改的评论也不能少于六个字哦!
JellyBool 回复 RJustice
修改的评论也不能少于六个字哦!