2021/12/14
Laravelでサイトの構築の開発を進めていると、場合によって複雑なSQL文を書くケースが出てきます。
特にテーブルの結合処理とかそうですね。
Eloquent では便利なリレーション機能がついていますが、複雑なSQL文だったら、生のSQL文を直接書いたほうがわかりやすかったりします。
生の SQL を Laravel で直接書く場合は、クエリビルダー(DBファサード)のSELECTメソッドを使います。
SQL文を直接書くならSQLの文法をきちんと理解しておく必要があります。
今回は実践でよく使うSQLの文法についてエントリーします。
この記事の内容
内部結合(INNER JOIN句)
2つのテーブルを結合してデータを取得する方法です。
指定したそれぞれのテーブルのカラムの値が一致するデータだけを取得します。
(※内部結合の場合、ベースとなるテーブルから、条件にマッチするレコードがないものは削除されます)
書式
取得するデータは2つのテーブルのカラムが混合したものとなります。どのテーブルのカラムなのかを表すために「テーブル名.カラム名」の形で指定します。
書式例
実行結果
3つのテーブル結合
書式
書式例
実行結果
join メソッドを使うとINNER JOIN
句と同じになります。
カラムに別名をつける(AS句)
SELECT文を使ってテーブルからデータを取得したとき、AS句を使用することで元のテーブルのカラム名とは異なるカラム名をつけてデータを取得することができます。
書式
書式例
実行結果
INNER JOIN句 + AS句
INNER JOIN句で内部結合すると結合先のカラム名とよくかぶってしまうので、合わせ技としてAS句をよく使います。
書式例
実行結果
LaravelのDBファサードで書いてみる
複雑なSQLならDBファサードのSELECTメソッドで直接SQLを実行したほうがいいかもしれません。
書式例
例えば、Ajax でURLを叩いて getAllOrder メソッドを実行し、JSON形式で返す処理を書く場合
以上です。
Udemyを使ったLaravel学習方法


仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら。