Я пытаюсь настроить laravel-tagging , которая, кажется, является самой популярной системой тегов для Laravel. Но, к сожалению, он не имеет никаких интерфейсных функций. Для этого есть руководство, которое я тщательно проследил. В конце я столкнулся с ошибкой при попытке создать тег:
SQLSTATE [23000]: нарушение ограничения целостности: 1048 Столбец «taggable_id» не может быть нулевым (SQL: insert
tagging_tagged
(tag_name
,tag_slug
,taggable_type
,taggable_id
) значения (сыр, сыр, приложение \ Ссылки))
Я нашел несколько других сообщений, где люди сталкивались с подобными ошибками, такими как это , это и это . Но ни одно из них не дает окончательного решения. Люди и здравый смысл говорят, что модель, содержащая taggable_id
должна быть сохранена, чтобы тег был сохранен в базе данных. Мой код для контроллера выглядит следующим образом:
public function storeStuff(Request $request) { // Create the link first $link = new Links; // Now add tags $link->tag(explode(',', $request->tags)); // Try to save tags? $link->save(); }
Моя попытка сохранить его с помощью $link->save();
в моем случае не работает. Я все равно получаю ту же ошибку, и моя таблица базы данных tagging_tagged
, в которой содержится столбец taggable_id
по-прежнему taggable_id
. Кто-нибудь есть какие-либо советы о том, как подойти к этой проблеме?
EDIT: Я получил его для работы, добавив еще один вариант, как это было предложено Тобиасом Карлссоном:
$link = new Links; $link->tag_name = $request->tags; $link->save(); // Now add tags $link->tag(explode(',', $request->tags)); $link->save();
Мне также пришлось добавить временные метки, чтобы исправить недостающую ошибку created_at
. Временные метки не включены в первоначальную миграцию, которая поставляется с пакетом laravel-tagging, хотя я не уверен, что они полезны для тегов. Моя таблица tagging_tagged
теперь выглядит так:
FIELD TYPE NULL KEY id int(10)unsigned NO PRI auto_increment taggable_id int(10)unsigned NO MUL taggable_type varchar(255) NO MUL tag_name varchar(255) NO tag_slug varchar(255) NO MUL created_at timestamp YES updated_at timestamp YES
Я все еще пытаюсь получить Javascript для автозаполнения тегов. Я обновлю этот вопрос, как только все получится.