Удалить или получить все данные с определенным именем тега в laravel - PullRequest
0 голосов
/ 31 октября 2018
Table 1: products: id, title, publish,created_at
Table 2: tags: id,name,lang,created_at
Table 3: taggable: id,tag_id,taggable_type,taggable_id

В модели товара:

public function tags()
{
    return $this->morphToMany('App\Tag', 'taggable');
}

Я создаю новую запись (в таблице tags)

$cat = Category::find(1);
$tag = \App\Tag::firstOrCreate(['name' => 'key1']);

Теперь я сохраняю связанные данные в taggables таблице:

$cat = Category::find(1);
$cat->tags()->save($tag);

Работает.

Теперь я хочу удалить все записи для $ cat в taggables:

$cat->tags()->detach();

Работает.

Теперь в таблице taggables у меня нет связанных данных для 'key1' в таблице tags. Поэтому я хочу удалить его.

Вопросы:

Как я могу проверить, что запись (name = 'key1') в tags не имеет связанных записей в taggable и как я могу удалить ее?

1 Ответ

0 голосов
/ 01 ноября 2018

Вот SQL-запрос для удаления данных с соответствующим идентификатором из таблицы 2:

delete taggable,tags from taggable left join tags on taggable.tag_id= tags.id where tags.id = "which id you want to delete";
...