ホームページ  >  記事  >  PHPフレームワーク  >  thinkphp5 での join の使用法は何ですか?

thinkphp5 での join の使用法は何ですか?

WBOY
WBOYオリジナル
2022-04-25 11:01:165420ブラウズ

thinkphp5 では、結合は、テーブル内の列間の関係に基づいて 2 つ以上のテーブルのデータをクエリするために使用されます。これは、コヒーレントな操作メソッドの 1 つです。返される結果はモデル オブジェクトです。構文は " join(関連付けるテーブル名と別名[関連条件[関連タイプ]])」。

thinkphp5 での join の使用法は何ですか?

この記事の動作環境: Windows 10 システム、ThinkPHP バージョン 5、Dell G3 コンピューター。

thinkphp5 での join の使用法とは何ですか

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。