上記の結合関数には、次の 3 つのパラメータが必要です。
join
関連付けられる (完全な) テーブル名とエイリアスは、3 つの記述方法をサポートします。
写法1:[ '完整表名或者子查询'=>'别名' ] 写法2:'完整表名 别名' 写法3:'不带数据表前缀的表名'
ログイン後にコピー
condition
关联条件,可以为字符串或数组, 为数组时每一个元素都是一个关联条件。
ログイン後にコピー
type
关联类型,可以为: INNER、LEFT、RIGHT、FULL,不区分大小写,默认为INNER。
ログイン後にコピー
異なるプレフィックス
通常、これらは同じデータベース内でクエリされます。この場合、
同じテーブルがデフォルトのプレフィックスとして使用されます。 (shop_)なので、
database model を使用する場合、関連付けられたクエリは次のように記述されることがよくあります: 上記のコードでは、モデル クエリを使用しているため、デフォルトでは、 2 つのテーブルの完全なテーブル名は shop_order と Order::alias('o')
->join('user u', 'o.user_id = u.id')
->select();
ログイン後にコピー
で、関連付けタイプのデフォルトは INNER 関連付けです。 ただし、 テーブルを別のプレフィックス (例: pay_record) に関連付ける場合、上記のクエリ ステートメントは明らかに機能しません。この場合、関連付けステートメントを少し変更する必要があります。
Order::alias('o') ->join(['pay_record' => 'r'], 'o.pay_id = r.id') ->select();
ログイン後にコピー
このようにして、モデルを使用して、テーブルをクエリのさまざまなプレフィックスに関連付けることができます。 概要
上記の方法は実際には
結合関数の結合パラメータを文字列から配列に変更しています; ThinkPHP は優れた開発フレームワークです。この方法はそのうちの 1 つであり、その他の方法については、公式マニュアル: ThinkPHP 公式マニュアルを参照してください。
関連する推奨事項: