У меня есть 2 модели, к которым присоединяется отношение, которое имеет составной ключ - это Product и Category. Мне нужно использовать мягкие удаления во всех таблицах, чтобы при необходимости могли восстанавливаться модели и отношения.
В моей модели продукта у меня есть:
function categories()
{
return $this->belongsToMany('App\Category', 'product_categories')->whereNull('product_categories.deleted_at')->withTimestamps();
}
В моей модели категории у меня есть:
function products()
{
return $this->belongsToMany('App\Product', 'product_categories')->whereNull('product_categories.deleted_at')->withTimestamps();
}
Я читал в другом месте о цепочке метода whereNull, поскольку запросы типа $category->products->contains($product->id)
в противном случае возвращали мягкие удаленные отношения.
Мой вопрос - это лучший способ справиться с удалением и восстановлением этих мягких удаленных отношений? Например, для восстановления я попытался:
$product->categories()->restore($category_id);
Вышеописанная ошибка SQL говорит, что поле deleted_at было неоднозначным (поскольку оно присоединилось к таблице категорий к product_categories).
Обновить. Похоже, что основная проблема заключается в том, что класс BelongsToMany не поддерживает мягкие удаления - поэтому прикреплять, отсоединять и синхронизировать все выполнять жесткие удаления. Каким будет лучший подход к переопределению этого класса?