ホームページ  >  記事  >  PHPフレームワーク  >  デフォルトのテーブルプレフィックスを使用しない ThinkPHP の結合クエリについて

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

藏色散人
藏色散人転載
2021-04-30 09:26:212624ブラウズ

次のチュートリアル コラムでは、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 までご連絡ください。