Laravel 7.xにAdminerを導入する


Laravel5/6にAdminer入れる記事はいくつかあったのですが、7.xに入れる記事が見つからなかったので、一応。

Adminerって?

laravelもphpも初心者なのでここからです。

Adminerはブラウザで操作できるデータベース管理ツール。
PHPファイル1つで書かれているため手間が少なく、またサイズも軽い。

対応するDBは以下の通り

  • MySQL
  • Oracle
  • SQLite
  • PostgreSQL
  • MS SQL
  • etc

Laravel7.xにAdminerを入れる

ライブラリ

元のツールがPHPファイル1つとはいえ、Laravelに入れるにはいろいろ必要となってきます。
ライブラリは現状2つ(?)あるっぽいです。

・miroc/Laravel-Adminer
  https://github.com/miroc/Laravel-Adminer

・onecentlin/laravel-adminer
  https://github.com/onecentlin/laravel-adminer

しかしながら、前者のライブラリはLaravelに合わせたバージョンアップがされておらず、
composer.jsonを見てもLaravel5.xしかサポートしていないようです。

よって、Laravel7.xでは後者のonecentlin/laravel-adminerを使用していきます。

手順

導入手順に関してはreadmeにある通りですので、5/6と変わりありません。

一応日本語で手順を書いておきます。

1. インストール

以下のコマンドでライブラリをインストールします。

composer require onecentlin/laravel-adminer

または、
composer.jsonのrequire部分に

composer.json
"require": {
    "onecentlin/laravel-adminer": "^4.7"
},

を追記して、composer updateします。

2. 事前準備

config/app.phpのproviders部分に以下を追記します。

app.php
'providers' => [
    ...
    Onecentlin\Adminer\ServiceProvider::class,
];

3. アクセス許可の設定

app/Http/Kernel.php$middlewareGroups部分に以下を追記します。

Kernel.php
protected $middlewareGroups = [
    ...
    'adminer' => [
        \App\Http\Middleware\EncryptCookies::class,
        \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
        \Illuminate\Session\Middleware\StartSession::class,

        // you may create customized middleware to fit your needs
        // example uses Laravel default authentication (default protection)
        \Illuminate\Auth\Middleware\Authenticate::class,
    ],
];

また、このあとLaravel5.1用の設定が必要となりますが、今回のスコープではないので割愛します。

4. Adminerのテーマを設定(任意)

デフォルトの表示でもよければ飛ばしても構いません。が、やっておくと非常に見やすいです。

以下コマンドを実行すると、adminer.cssファイルがpublicフォルダにコピーされます。

php artisan vendor:publish --provider="Onecentlin\Adminer\ServiceProvider"

Adminerの公式に様々なテーマがあるので好きなものをコピーして、adminer.cssに上書きしましょう。
ちなみに冒頭の画像は公式の「nette」というテーマを適用した場合のサンプルです。

5.アクセス

あとはブラウザからアクセスできればOKです。

http://[your.domain.com]/adminer

備考

ちなみにライブラリとかじゃなく生のツールの方のAdminerは
Laravelで使用している関数名とコンフリクトしているので、無理やり入れると後が面倒です。