Как получить значение столбца по умолчанию с помощью Laravel?

Я создаю пользовательскую команду ремесленника, которая должна иметь доступ к значениям базы данных по умолчанию для определенных столбцов. Я не могу использовать массив атрибутов. Поэтому вместо этого мне нужен другой способ.

Я пытался использовать Schema. Мне удалось получить таблицу DB::table($table) и имена столбцов Schema::getColumnListings($table), но не значения по умолчанию.

Есть ли другой способ получить значения по умолчанию?

Я не думаю, что для этого есть команда, но этот ТАК вопрос или этот вопрос могут помочь вам создать собственный метод.

aynber 13.02.2019 17:44
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
1
1 255
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

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();

Другие вопросы по теме