Всем привет! Имеет 2 сущности Form и Event связаны между собой полиморфной связью многие ко многим, в сводной таблице есть pivot с названием values, оно хранится в виде json поля. Можно ли как-то использовать каст для этого поля?
Код модели Event:
class Event extends Model
{
use HasFactory;
use HasJsonRelationships;
protected $fillable = [
'title'
];
protected $casts = [
'pivot.values' => 'array',
];
public function forms()
{
return $this->morphToMany(Form::class, 'entity', 'entities_forms')
->withPivot('values')
->using(ValuesPivot::class);
}
}
Код модели Forms:
class Form extends Model
{
use HasFactory;
protected $fillable = [
'title',
'structure',
];
protected $casts = [
'entity_id' => 'array',
'structure' => 'array',
'pivot.values' => 'array',
];
public function events()
{
return $this->morphedByMany(Event::class, 'entity', 'entities_forms')->withPivot('values')->using(ValuesPivot::class);
}
}
Код ValuesPivot:
class ValuesPivot extends MorphPivot
{
protected $casts = [
'values' => 'array'
];
}
Результат с withPivot('values'):
Результат без withPivot('values'):
Данная проблема решилась добавлением следующей строки в класс ValuePivot:
protected $fillable = [
'value'
];