【Laravel】migrateで『Class ‘CreateFoooTable’ not found』が発生する

■環境

Laravel 5.1


Laravelの「migrate:rollback」や「migrate:refresh」をしようとして
『Class ‘CreateFoooTable’ not found』というエラーが発生した際の解決方法です。

この事象はmigrateで利用する「/database/migrations」ディレクトリに配置されているファイルが
autoloadされていない事が原因のようです。

解決するにはプロジェクトのrootディレクトリにて以下コマンドを実行し、autoloadを再編成します。

composer dump-autoload

※composerインストールについてはコチラ

もしサーバにcomposerを入れられない場合は作業PCにて上記コマンドを実行すると
「/vendor」ディレクトリ配下が更新されるのでサーバにアップロードしてください。

以上。

Share

【PHP】Laravel5でカスタムバリデーションを追加する

Laravel5でカスタムバリデーションを追加した際の手順です。

■環境
Laravel 5.1

まず、サービスプロバイダーを作成して、バリデーションルールを記載します。
例えば以下のルールの社員番号があったとします。
・頭文字は「A」または「Z」
・2文字目以降は数字6桁

このバリデーションルールを『shainbangou』という名前のルールで登録するとこうなります。
【/app/providers/ValidatorServiceProvider.php】

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Validator;

class ValidatorServiceProvider extends ServiceProvider
{
    public function boot()
    {
        Validator::extend('shainbangou', function($attr, $value, $param) {
            return preg_match('/^[A|Z][0-9]{6}$/', $value);
        });
    }
}

次にエラー文言の設定をします。
viewにて社員番号はempIdという変数名で設定されているとします。
【/resources/lang/ja/validation.php】

return [
〜〜 省略 〜〜
    'custom' => [
        'empId' => [
            'shainbangou' => '社員番号が間違っています。(A/Z + 数字6桁).',
        ],
    ],
〜〜 省略 〜〜
    'attributes' => [
        'empId' => '社員番号',
    ],
];

これで、コントローラなどのバリデーション処理で新ルール「shainbangou」が使えるようになります。

Share