1つの文書にまとめるものでもないような短いLaravelネタを気づいた時に追加していきます。バージョンによっては使えないものもあるかもしれません。

開発サーバのポートを変える

Laravelをインストールした後にphp artisan serveを実行すると8000で起動します。ポートを指定したい場合は、–portオプションを利用します。


 $ php artsan serve --port=80

ポート80だとアクセス権の問題で失敗する時があるのでその時はsudoを使用します。

なぜデフォルトでは8000で8000が使用していると8001に割り当てられますが、これはvendor¥laravel¥framework¥src¥illuminate¥Foundation¥CosoleディレクトリにあるServerCommad.phpに記述されています。


protected function port()
{
    $port = $this->input->getOption('port') ?: 8000;

    return $port + $this->portOffset;
}
LaravelではなくPHPの開発サーバ(ビルトインサーバ)を起動したい場合は、 php -S localhost:8080で起動することができます。起動した場所のディレクトリがルートディレクトリになります。

php artisanのコマンドを忘れたら

php artisan listを実行して、どんなコマンドがあったか確認しましょう。


 $ php artisan list

listの結果出てきたコマンドの詳細を知りたい場合は、php atisan helpコマンドを使用しましょう。


 $ php artisan help コマンド名

コマンドの実行に使われるファイルは下記のディレクトリに保存されています。

vendor¥laravel¥framework¥src¥illuminate¥Foundation¥Cosole

実行したSQLをみたい場合(1)

下記のようにddメソッドをつければデバッグすることができます。


$user = User::where('name','John Doe')->dd();

"select * from `users` where `name` = ?"
array:1 [▼
  0 => "John Doe"
]

実行したSQLをみたい場合(2)

実行したいSQLを見たい場合はAppServiceProvider.phpを利用することもできます。

bootメソッドにDB::listenを下記のように記述することで実行したSQLがログファイルに書き込まれます。ログファイルはstorage/logs/の下に作成されます。


public function boot()
{
    \DB::listen(function ($query) {
        logger()->info($query->sql);
        logger()->info($query->bindings);
        logger()->info($query->time);
    });       
}

Laravelのトップページにアクセスするとログファイルには以下の情報が書き込まれます。


[2019-08-31 01:12:00] local.INFO: select * from `users` where `id` = ? limit 1
[2019-08-31 01:12:00] local.INFO: array (
  0 => 2,
)
[2019-08-31 01:12:00] local.INFO: 14.88

Bladeファイルで改行させたい場合

textareaタグで入力した文章で改行がある場合そのまま{{ $text }}を記述したも改行されません。nl2brは\nなどの改行文字の前に改行タグ<br>を入れてくれます。


{!! nl2br(e($text)) !!}

ユーザのパスワードを強制変更

登録したユーザのパスワードを強制的に変更したい場合は、tinkerを使って行うことができます。

tinkerを起動して、パスワードしたユーザ情報を取得して、Hashファサードを使って12356789のパスワードに変更しています。


$ php artisan tinker
>>> $user = App\User::where('email','john@example.com')->first();
=> App\User {#2963
     id: 2,
     name: "john doe",
     email: "john@example.com",
     email_verified_at: null,
     created_at: "2019-08-31 00:32:35",
     updated_at: "2019-08-31 00:32:35",
   }
>>> $user->password = Hash::make('123456789');
=> "$2y$10$.BCHxBV3rD3pHMdbMa.W.O08JNFWGLwDqehdZKE5kh8PNSADSuSha"
>>> $user->save();
=> true

JavaScript側で認証ユーザの情報を取得する

JavaScriptやvue.jsなどで認証したユーザ情報を取得したい場合は以下のscriptタグを使うことで取得することができます。


<script>
    window.user = {!! json_encode([ 'user' => auth()->check() ? auth()->user() : null,]) !!}
</script>

userのidだけが必要な場合は、下記とすればユーザのidだけ取得することができます。


<script>
    window.user = {!! json_encode([ 'user' => auth()->check() ? auth()->user()->id : null,]) !!}
</script>

こちらでも取得できます。


<script>
    window.user = {!! auth()->user() !!};
</script>

使用したい場合は、windows.userで可能です。

随時追加中