Laravel eloquent UUID in a pivot table

2019-02-20 17:22发布

This question is like this one: laravel uuid not showing in query. However, the difference in this question is about that table is a pivot table with id field uses UUID generated via MySQL trigger on insert.

I don't want to create another model for that pivot table to supply it with the solution regarded on the similar question's answer. So, is there any way to perform type casting of the pivot table from another model related to it?

1条回答
叛逆
2楼-- · 2019-02-20 17:53

I think this might be what you want:

In your model that defines the BelongsToMany relationship add this property:

protected $casts = ['relationName.pivot.id' => 'string'];

Update

I guess we can make use of anonymous classes in php7.0 here instead of creating a model class for the pivot:

i didn't test this code so i don't know if it will work or not, this is just an idea

public function activeStatuses()
{
    return $this->belongsToMany('ModelName')
                ->using(class_basename(new class extends \Illuminate\Database\Eloquent\Relations\Pivot {
                    protected $casts = ['id' => 'string'];
                }));
}

Generally i would prefer to create model for the pivot table or simply use a pivot class

查看更多
登录 后发表回答