Laravelの小ネタ集
カテゴリ: Programming
公開日: 2019-10-10 by kuro
Laravelを使っていて気づいたこと、嵌ったことをまとめておきます。
メールをログへ出力する(ローカル開発)
初出: 2019-05-03

ローカルで動作確認する際、実際にメールを送信せずにログへ出力する設定です。
config/mail.php と .env の2箇所を変更します。
// config/mail.php
'driver' => env('MAIL_DRIVER', 'log'),
# .env
MAIL_DRIVER=log
.env を変更した後は、サーバーを再起動して再読み込みする必要があります。
docker-compose exec php php example/artisan serve --host 0.0.0.0
成功すると storage/logs/laravel.log にメールの内容が書き出されます。
コントローラーへの use も忘れずに。
use Illuminate\Support\Facades\Mail;
resources/sass の sass とは
初出: 2019-05-08

LaravelのresourcesフォルダにあるSassとは Syntactically Awesome Stylesheets の略です。
SassにはSASS記法とSCSS記法の2種類があります。
| 記法 | 拡張子 | 特徴 |
|---|---|---|
| SASS記法 | .sass |
インデントベース、波括弧なし |
| SCSS記法 | .scss |
CSSに近い文法、波括弧あり |
どちらも同じSassに含まれるため、resources/sass フォルダでは両方の拡張子が使えます。なぜ sass フォルダに .scss ファイルがあるのかと疑問に思いましたが、これで納得できました。
ORA-01008: バインドされていない変数があります
初出: 2019-10-10
LaravelでOracleのクエリを生成する際に発生したエラーです。
ORA-01008 バインドされていない変数があります。
原因は サブクエリのバインド変数の順序がずれていたことでした。
mergeBinding($subquery) だけではバインド変数の順序がおかしくなる場合があります。join を使ったサブクエリの場合は addBinding で type を明示的に指定する必要があります。
// joinしたサブクエリのバインド変数を追加
$mainquery->addBinding($subquery->getBindings(), 'join');
QueryBuilder(Model::select())ではなくファサード(DB::table())を使った join の場合は特に注意が必要です。生成されたSQLをログから取り出してSQLクライアントで直接実行してみると、問題の箇所を特定しやすくなります。