Laravel 姓・名 別カラムの検索
Laravel 姓・名 別カラムの検索
姓と名が別のカラムで保存されていた場合、
「松田千尋」と検索してもヒットしません。
結論として、whereRawを使って、where節へ挿入する方法を取ります。
$query->whereRaw('CONCAT(last_name, "", first_name) LIKE ? ', '%' . $name . '%');
インジェクション対策として、第二引数に検索対象の文字列を入れます
参考
LaravelでMySQLのZEROFILLをmigrationで実行する方法
LaravelでMySQLのZEROFILLをmigrationで実行する方法
数値型がいい!でもゼロ埋めを許可するINT型といえばMySQLのZEROFILL。ゼロ埋めするならtext系の型にするのもありだけど、やっぱINT型のが速そうなのでやっぱここはZEROFILLで。
(AFTER column_name2はcolumn_name2後に追加したいとき。)
これでゼロ埋めのカラムが追加されたけれど、残念ながらLaravelのmigrationはZEROFILL対応してないんで、migrationファイルに直でSQLを書いて実行してあげるほか無いようです。
Laravelが5になってもmigrationにZEROFILLは対応してないので、migrationに直接SQL書いて実行というパターンは変わらないです。
supervisorでQueue監視をしてみた時の話。
ちょっとハマったsupervisorのQueue監視。そもそも起動にすら失敗したのでクラウドメモ。
supervisord 起動までの手順
Queue管理といえばsupervisord。キュー管理といえばsupervisord。大事なことなので2回言いましたよ。
起動までに結構手間取ってしまったのでクラウドメモ。
supervisord インストール
epelリポジトリが入っているとyum でインストールが可能。
yum --enablerepo=epel install -y supervisor
/etc/supervisord.conf 設定変更
今回はLaravelのQueue管理として導入したので、対象となるコマンド、ディレクトリを設定します。
取り急ぎ、追記する形で対象のコマンドとディレクトリ、そしてログファイルを下の方に追記。
supervisordを起動!!
何かエラる!
socket が行方不明のようだ
[FAILED]
ソケットのありかを探す
supervisor.sockなんてない!!!
なんかこういうの、MySQLのインストに失敗してmysql.sockが無いって言われるのとなんか似てるぞ。。?
困ったときは公式をチェック
sudo chmod 777 /var/run/supervisor.sock
(touchしてsockファイルを作れと。)
issuで作られたsockの場所がたまた/var/run/下な訳であって、必ずしもこのディレクトリに作ることは必須では無いと思われ。
私はとりあえずissuと同じディレクトリで作りました。
上記手順でsockを作ったら再度/etc/supervisord.confをひらいてsockのパスを修正。
supervisordを起動!!
Starting supervisord: Unlinking stale socket /var/run/supervisor.sock
[ OK ]
めでたしめでたし!
監視したい機能が他にもあったら[program:プログラム名称]でどんどん設定すればよろしいはず。
コマンドとディレクトリとログファイルを設定すればよし。
Laravel 5 collectionを使った必ず記号も含まれるランダムパスワード
str_ramdom()を使うより、もう少し強固な必ず記号も含まれるランダムなパスワードを生成したい
Larvalで以下のようにするとランダムな10文字を生成できます。パスワードリセット時などに便利
//Aek3Gkfk89
ただしパスワード設定の仕様がもう少し強固で、
- 必ず半角大文字と半角小文字が入る
- 数字を一つ以上含む
- 記号を一つ以上含む
という「必ず大文字や数字や記号をそれぞれ含めなければならない」というルール縛りがあるとただランダムな文字列を生成するだけでは足りない場合があります。
(生成された文字がただのランダムだと、大文字や数字が一切含まれないということは当然発生しうる)
必ず仕様に乗っ取る強固なパスワードを生成する手順
- a から zの小文字配列をランダムで生成して指定数 配列を抽出
- Aから Zの小文字配列をランダムで生成して指定数 配列を抽出
- 0から 9の整数を配列をランダムで生成して指定数 配列を抽出
- パスワードに使える記号を配列に。指定した数だけ 配列を抽出
- 1~4までの手順で生成された配列を合体
- 5の手順で合体した配列を文字列に変換し、シャッフル
4番目の記号は以下の通りとした
ランダムにいきなりとりだすのではなく、半角英字と数字、記号をそれぞれ別々に取り出してから 合体させて 最後にシャッフルすること。
Laravel5で 必ず数字や記号が含まれるランダムなパスワードの生成の例
CollectionはLaravelで配列からいい感じに配列を抽出できるヘルパーです。
ついでに非Laravelerの人へ捧ぐ、同じような強固なパスワード生成
array_flipは優秀だということがわかった。
Laravel5 正規表現 validataion
Laravel5 正規表現validataion
Laravel5 validataionには正規表現チェックがあるみたい。
validataionで正規表現チェック毎にカスタムバリデーション作ってあげるのかなあと思っていたら違うようですね。
regex
なお、下記は電話番号の正規表現。
‘tel’ => ‘required|regex:/^[0-9]{2,4}-[0-9]{2,4}-[0-9]{3,4}$/’,
]);
ッオー。楽チン
Laravel 5 現在のパスワードを入力チェックする
Laravel 5 custom validation old password check
windowsのログオン画面でもお馴染み、現在のパスワードを入力して新しいパスワードを設定するあれ、作ります。
今回はLaravel 5 custom validationにて追加します。
STEP1 making new validation class
STEP2 add new class to boot
STEP3 load new validation in controller ’new validation:$password’
STEP1 making new validation class
app/Validation/OldPassWordValidator.php
まずはvalidation Classを用意します。$valueにはフォームの入力値が入り、$parametersは比較の対象が入ります。
今回パスワードはハッシュ化されていることを想定するので、Hash::checkを使うことでハッシュ化されたデータに違いがないかboolで結果が取れます。
STEP2 add new class to boot
app/Providers/AppServiceProvider.php
bootへ新しいvalidation classを追加。これでvalidationとして使うことができます。
STEP3 load new validation in controller
あとは通常のvalidationと同様にcontrollerにセットすれば使うことができます。
Laravel 5パスワード確認フォームを作る
Laravel 5:making confirmed password form
最近仕事でLaravelを使うようになりまして、覚えたことをブログにまとめていきたいと思います。今回はパスワード再入力フォームを作る手順です。
STEP1 create view file
STEP2 create validation file
STEP3 set validations in controller ’same:form-name’
STEP1 create view file
まずはviewファイルを作ります。
STEP2 create validation file
日本語でバリデーションを作る場合は resources/lang/ja/validation.phpを作る
resources/lang/en/validation.php よりコピー。
jaフォルダへvalidation.phpを設置。
resources/lang/ja/validation.php
STEP3 set validations in controller ’same:form-name’
validationをcontrollerにセットする。password_confirmがpasswordフォームと同じかどうかはsame:password とすれば良い