У меня есть модель ProductTags, которая связана с моим продуктом один ко многим. Мне нужно, чтобы один и тот же идентификатор модели и тег не дублировались в нескольких записях. В миграции у меня есть $table->unique(['product_uuid', 'tag']);
, но это означает, что если я пытаюсь создать модель, которая является дубликатом существующей модели, я получаю нарушение ограничения целостности.
Поэтому, когда создается модель ProductTags, прежде чем она получитсохраненный он должен проверить базу данных для существующей версии, а затем прервать свое собственное создание. Я бы предпочел сделать это в модели, поэтому мне нужно реализовать ее только один раз вместо контроллеров и фабрики.
Я попытался переопределить метод create, чтобы перехватить его, но когда я его добавил, он не 'Кажется, его вообще не зовут.
class ProductTag extends Model
{
protected $fillable = [
'product_uuid', 'tag',
];
public function create($data){
if(
ProductTag::where('product_uuid', '=', $data['product_uuid'])->
where('tag','=', $data['tag'])
){
return false;
}
return parent::create($data);
}
}