Я делаю пакет Laravel в первую очередь для внутреннего использования в проекте, но я наткнулся на небольшую загадку ...
Я добавляю полнотекстовый столбец searchable
к каждой модели, которую необходимо найти. Я использую нативные функции миграции Laravel, вот так -
Schema::table('assets', function (Blueprint $table) {
Searchable::migrateUp($table, 'moderated');
});
Таким образом, вызывается метод для развертывания миграции после столбца moderated
. Вот как выглядит этот метод -
public function migrateUp(Blueprint $table, $after = null)
{
// add our searchable column
$table
->longText('searchable')
->after($after)->nullable();
// ToDo: get indexing working on migration
// add a fulltext index
DB::statement(
'ALTER TABLE ? ADD FULLTEXT fulltext_searchable (?)',
[$table->getTable(), 'searchable']
);
// return our table
return $table;
}
Итак, создается пустое длинное текстовое поле, и затем я пытаюсь создать индекс FULLTEXT из этого. Проблема, конечно, в том моменте, когда я выполняю свое утверждение, столбец с возможностью поиска на самом деле еще не существует. Можно ли как-нибудь это сделать, пока пользователь все еще так просто звонит Searchable::migrateUp()
в своем файле миграции?
Цените любые указатели! Крис.