У меня есть две модели [Tag and Topic].
ТЕГ:
class Tag extends Model{
protected $fillable = ['name'];
public function topics(){
return $this -> belongsToMany('\App\Topic','tag_topic')->withPivot('topic_id', 'category_id');
}
}
ТЕМА:
class Topic extends Model{
protected $fillable = [ 'user_id', 'creator_id', 'name', 'category_id'];
public function tags(){
return $this -> belongsToMany('\App\Tag', 'tag_topic')->withPivot('topic_id', 'category_id');
}
}
Затем у меня есть миграции для обеих таблиц и сводной таблицы. [ТЕГ]
Schema::create('tags', function (Blueprint $table) {
$table->engine = 'InnoDB';
$table->increments('id')->unsigned()->unique();
$table->string('name') -> unique();
$table->timestamps();
});
[ТЕМА]
Schema::create('topics', function (Blueprint $table) {
$table->engine = 'InnoDB';
$table->increments('id')->unsigned()->unique();
$table->integer('user_id') -> unsigned();
$table->integer('creator_id') -> unsigned();
$table->string('name');
$table->enum('status', ['pending', 'accepted']);
$table->integer('category_id')->unsigned();
$table->foreign('category_id')->references('id')->on('categories')->onDelete('cascade')->onUpdate('cascade');
$table->foreign('creator_id')->references('id')->on('creators')->onDelete('cascade')->onUpdate('cascade');
$table->foreign('user_id')->references('user_id')->on('creators')->onDelete('cascade')->onUpdate('cascade');
$table->timestamps();
});
[ВРАЩАТЬСЯ]
Schema::create('tag_topic', function (Blueprint $table) {
$table->increments('id')->unsigned()->unique();
$table->integer('tag_id') -> unsigned() -> nullable();
$table->foreign('tag_id')->references('id')->on('tags')->onDelete('cascade')->onUpdate('cascade');
$table->integer('topic_id') -> unsigned() -> nullable();
$table->foreign('topic_id')->references('id')->on('topics')->onDelete('cascade')->onUpdate('cascade');
$table->integer('category_id') -> unsigned() -> nullable();
$table->foreign('category_id')->references('category_id')->on('topics')->onDelete('cascade')->onUpdate('cascade');
$table->timestamps();
});
Мой вопрос: как только я удаляю любую ТЕМУ, независимо от того, какую из них, она автоматически удаляет ВСЕ, буквально все из сводной таблицы.
Что я делаю, чтобы удалить тему, так это:
$topic = Topic::where('name', '=', $request -> topic_name) -> first();
$category = Category::where('id', '=', $topic->category_id) -> first();
$topic -> delete();
Но он удаляет все, любая помощь, я что-то упускаю?