Я создал таблицу для сохранения связи между публикацией и категорией.
Schema::create('post__post_category_relations', function (Blueprint $table) {
$table->engine = 'InnoDB';
$table->integer('post_id')->unsinged();
$table->integer('category_id')->unsinged();
});
Если я удалю категорию, я хочу, чтобы сообщения этой категории переместились в категорию «Без категории» (с идентификатором = 1), если записьесть только одна категория.
Это мой скрипт в CategoryController:
public function destroy(Category $category)
{
$this->category->destroy($category);
foreach($category->posts as $post){
if(count($post->categories) <= 1){
PostCategoryRelations::where('post_id',$post->id)->update(['category_id' => 1]);
}
}
}
И модель категории:
public function posts()
{
return $this->belongsToMany(Post::class, 'post__post_category_relations', 'category_id');
}
И модель сообщения:
public function categories()
{
return $this->belongsToMany(Category::class, 'post__post_category_relations', 'post_id');
}
Это работает, но я думаю, что это не оптимизировать.Потому что я должен использовать цикл, чтобы найти пост только одной категории.Если у меня будет 1 миллион сообщений, будет очень медленно, когда я хочу удалить категорию.Можете ли вы показать мне лучшие идеи?Спасибо!