thinkphp5 では、結合は、テーブル内の列間の関係に基づいて 2 つ以上のテーブルのデータをクエリするために使用されます。これは、コヒーレントな操作メソッドの 1 つです。返される結果はモデル オブジェクトです。構文は " join(関連付けるテーブル名と別名[関連条件[関連タイプ]])」。
この記事の動作環境: Windows 10 システム、ThinkPHP バージョン 5、Dell G3 コンピューター。
JOIN メソッドもコヒーレント操作メソッドの 1 つで、テーブル内の列間の関係に基づいて 2 つ以上のテーブルからクエリを実行するために使用されます。これらのテーブル、データ。
説明
object join ( mixed join [, mixed $condition = null [, string $type = 'INNER']] )
パラメータ
join: 関連付けられる(完全な)テーブル名と別名は、3つの記述方法をサポートします:
書き方 1: ['完全なテーブル名またはサブクエリ'=>'エイリアス']
書き方 2:'完全なテーブル名のエイリアス'
書き込み 3: 'データテーブルプレフィックスのないテーブル名'
condition: アソシエーション条件。文字列または配列にすることができ、配列の場合、各要素は関連付けられた条件になります。
type: アソシエーションタイプ。指定できるのは次のとおりです: INNER、LEFT、RIGHT、FULL、大文字と小文字は区別されません。デフォルトは INNER です。
戻り値: モデル オブジェクト
結合には通常、次の型があります。結合操作の種類が異なると、返されるデータの結果に影響します。
INNER JOIN: JOIN (デフォルトの JOIN タイプ) と同等。テーブル内に少なくとも 1 つの一致がある場合、行が返されます
LEFT JOIN : 右のテーブルに一致するものがない場合でも、左のテーブルのすべての行を返します。
RIGHT JOIN: 一致するものがない場合でも、右のテーブルからすべての行を返します。左側のテーブル
FULL JOIN: いずれかのテーブルに一致がある限り、行が返されます。
例は次のとおりです。 :
Db::table('think_artist') ->alias('a') ->join('think_work w','a.id = w.artist_id') ->join('think_card c','a.card_id = c.id') ->select();
Db::table('think_artist') ->alias('a') ->join('__WORK__ w','a.id = w.artist_id') ->join('__CARD__ c','a.card_id = c.id') ->select();
$join = [ ['think_work w','a.id=w.artist_id'], ['think_card c','a.card_id=c.id'], ]; Db::table('think_user')->alias('a')->join($join)->select();
上記3つの書き方も同様で、__WORK__と__CARD__は最終分析時にthink_workとthink_cardに変換されます。注: 「_table name_」メソッドの途中にあるテーブル名は大文字である必要があります。
エイリアスを使用したくない場合は、後続のメソッドでテーブルの完全な名前を使用する必要があります。次のメソッドを使用できます。
Db::table('think_user')->join('__WORK__','__ARTIST__.id = __WORK__.artist_id')->select();
デフォルトでは INNER JOIN メソッドが使用されます。他の JOIN メソッドを使用する必要がある場合は、これを
Db::table('think_user')->alias('a')->join('word w','a.id = w.artist_id','RIGHT')->select();
に変更できます。テーブル名も使用できます。サブクエリであること
$subsql = Db::table('think_work')->where(['status'=>1])->field('artist_id,count(id) count')->group('artist_id')->buildSql(); Db::table('think_user')->alias('a')->join([$subsql=> 'w'], 'a.artist_id = w.artist_id')->select();
buildSql によって返されるステートメントには () が含まれるため、両端に () を追加する必要はありません。
推奨学習: 「PHP ビデオ チュートリアル 」
以上がthinkphp5 での join の使用法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。