Search code examples
phplaraveleloquentpivotlaravel-5.4

Laravel eloquent UUID in a pivot table


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?


Solution

  • 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