Как расширить построитель запросов Laravel? - PullRequest
0 голосов
/ 10 мая 2019

Я хочу получить индексы таблицы базы данных Laravel.

Я знаю, что могу получить их, как показано ниже

\DB::select("SHOW INDEX FROM $db_table_name WHERE non_unique = 1 AND column_name = '$db_column_name'");

Но я думаю, что это не очень хорошо. Я хочу получить их как:

// this
\DB::getIndex($db_table_name, $db_column_name);

// Or this
\DB::table($db_table_name)->getIndex($db_column_name);

Я думаю, что должен расширить построитель запросов.
Подскажите пожалуйста как это сделать.

Edit -
Я использую
Laravel Framework 5.6.39
PHP 7.2.17

1 Ответ

4 голосов
/ 10 мая 2019

Да, вам нужно будет расширить построитель запросов, чтобы вы могли поместить этот код в свой метод AppServiceProvider boot или, если у вас есть пользовательский поставщик услуг:

use Illuminate\Database\Query\Builder; // at the top of the class

Builder::macro('getIndex', function($columnName){
   return $this->getConnection()
           ->select("show index from {$this->from} where non_unique = 1 and column_name='$columnName'");
});

Затем использовать его:

DB::table('TABLE_NAME')->getIndex('COLUMN_NAME');

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...