Я создаю пользовательскую команду ремесленника, которая должна иметь доступ к значениям базы данных по умолчанию для определенных столбцов. Я не могу использовать массив атрибутов. Поэтому вместо этого мне нужен другой способ.
Я пытался использовать Schema. Мне удалось получить таблицу DB::table($table) и имена столбцов Schema::getColumnListings($table), но не значения по умолчанию.
Есть ли другой способ получить значения по умолчанию?






Laravel Schema Builder возвращает имена столбцов только по дизайну. Но вы можете использовать тот же подход, который Laravel использует внутри, выполнив оператор базы данных:
$results = DB::select('
select column_default
from information_schema.columns
where
table_schema = ?
and table_name = ?
', [$database, $table]);
// Flatten the results to get an array of the default values
$defaults = collect($results)->pluck('column_default'))
Приведенный выше пример работает для базы данных MySQL, но вы можете увидеть подходы для других баз данных в пространстве имен Illuminate\Database\Schema\Grammars исходного кода Laravel, выполнив поиск метода compileColumnListing.
В Laravel 5+ (включая 6 и 7) вы можете получить метаданные столбца таблицы базы данных (например, тип, значение по умолчанию и т. д.) следующим образом:
use Illuminate\Support\Facades\Schema;
Для всех столбцов:
$columns = Schema::getConnection()->getDoctrineSchemaManager()->listTableColumns('table_name');
Для одного столбца:
$column = Schema::getConnection()->getDoctrineColumn('table_name'', 'column_name');
getDoctrineSchemaManager метод возвращает массив \Doctrine\DBAL\Schema\Column экземпляров класса. Используя это, вы можете получить все о столбце таблицы БД.
Метод getDoctrineColumn возвращает экземпляр класса \Doctrine\DBAL\Schema\Column.
Пара методов из класса \Doctrine\DBAL\Schema\Column:
$column->getName();
$column->getNotnull(); // returns true/false
$column->getDefault();
$column->getType();
$column->getLength();
Я не думаю, что для этого есть команда, но этот ТАК вопрос или этот вопрос могут помочь вам создать собственный метод.