デフォルトのテーブルプレフィックスを使用しない ThinkPHP の結合クエリについて

藏色散人
リリース: 2021-04-30 09:26:21
転載
2637 人が閲覧しました

次のチュートリアル コラムでは、ThinkPHP の結合クエリがデフォルトのテーブル プレフィックスを使用しない方法を紹介します。困っている友人の役に立てば幸いです。 ThinkPHP の結合関連クエリはデフォルトのテーブル プレフィックスを使用しません

ThinkPHP の関連クエリについて、公式ドキュメントでは次のように説明されています。

上記の結合関数には、次の 3 つのパラメータが必要です。
デフォルトのテーブルプレフィックスを使用しない ThinkPHP の結合クエリについてjoin

関連付けられる (完全な) テーブル名とエイリアスは、3 つの記述方法をサポートします。

写法1:[ '完整表名或者子查询'=>'别名' ]
写法2:'完整表名 别名'
写法3:'不带数据表前缀的表名'
ログイン後にコピー

condition

关联条件,可以为字符串或数组, 为数组时每一个元素都是一个关联条件。
ログイン後にコピー

type

关联类型,可以为: INNER、LEFT、RIGHT、FULL,不区分大小写,默认为INNER。
ログイン後にコピー

異なるプレフィックス

通常、これらは同じデータベース内でクエリされます。この場合、

同じテーブルがデフォルトのプレフィックスとして使用されます。 (shop_)

なので、

database model

を使用する場合、関連付けられたクエリは次のように記述されることがよくあります:

Order::alias('o')
     ->join('user u', 'o.user_id = u.id')
     ->select();
ログイン後にコピー
上記のコードでは、モデル クエリを使用しているため、デフォルトでは、 2 つのテーブルの完全なテーブル名は shop_order

shop_user

で、関連付けタイプのデフォルトは INNER 関連付けです。 ただし、 テーブルを別のプレフィックス (例: pay_record) に関連付ける場合、上記のクエリ ステートメントは明らかに機能しません。この場合、関連付けステートメントを少し変更する必要があります。

Order::alias('o')
     ->join(['pay_record' => 'r'], 'o.pay_id = r.id')
     ->select();
ログイン後にコピー

このようにして、モデルを使用して、テーブルをクエリのさまざまなプレフィックスに関連付けることができます。 概要

上記の方法は実際には

結合関数の結合パラメータを文字列から配列に変更しています

; ThinkPHP は優れた開発フレームワークです。この方法はそのうちの 1 つであり、その他の方法については、公式マニュアル: ThinkPHP 公式マニュアルを参照してください。

関連する推奨事項:
最新の 10 件の thinkphp ビデオ チュートリアル

以上がデフォルトのテーブルプレフィックスを使用しない ThinkPHP の結合クエリについての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:segmentfault.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート