▼目次▼
N+1問題
…無駄なfor文などをぶん回すこと
1+N
…逆に一回のfor文で必要な情報を取ってくること(理想的)例:全てのユーザーを取ってくる。 その中のコメントを取ってくる。 →2回for文を回さなくてはいけなくなる。 →
N+1問題
全てのユーザーを取ってくる
それに紐づいたコメントも取る(withなどで)。
→for文は一回で済む。
→1+N
で解決
whereHas()
1対多のリレーションを取るときに使える
with()
で辿り、whereHas()
で必要なデータだけを持ってくるようにするpublic function index(){
$user = User::whereHas('posts', function($query){
$query->where('created_at', '>', '2018-09-03');
})->get();
dd($user);
// return view('home');
}
array:2 [
0 => User{}
1 => User{}
]
Laravelのwherehasで複数のリレーションを繋げてデータ取得する方法
$commentUser = User::with('posts.comments')
->whereHas('posts.comments', function ($query) {
return $query->where('message', "よろしく");
})
->get();
Laravelのバリデーションで指定できる内容をざっくりまとめ直しました。 - Qiita
@if (isset($message))
【Laravel】bladeで変数の存在確認する方法 - Qiita
一度マイグレーションしたが、やっぱりまだファイルを書き換えたい場合
php artisan migrate:rollback
ロールバックをするphp artisan migrate
すればOKSQLの確認ができるメソッド
\\DB::enableQueryLog();
とdd(\\DB::getQueryLog());
で挟むとその処理で行われているSQL文が表示される(処理時間も表示)\\DB::enableQueryLog();
処理(User::with('comments'......))
dd(\\DB::getQueryLog());
【Laravel】SQLの確認はenableQueryLogを使う | ログログ
Laravel Jetstream+SocialiteでSNS認証
名前空間\\クラス名::メソッド名()
で呼び出し可能$request = new 名前空間();
のように一旦、変数に入れて、それを他で活用するLaravel 標準搭載のデバッグ機能 tinker コマンドのご紹介 - Qiita
【Laravel】tinkerを使ってデータを操作する - Qiita
some
…配列の中で一つでも合えば、trueを返す。一つも一致しなければfalseを返すArray.prototype.some() - JavaScript | MDN
concat
…複数の配列を結合させる
concat
やpush
は破壊的な階層になってしまうこともあるため、配列の連結は考える必要がある。push
concat
Array.prototype.concat() - JavaScript | MDN
this.canvas.getContext("2d")…
moveTo
…直線を描くときに使う(座標)