ホームページ >バックエンド開発 >PHPチュートリアル >thinkphp 学習ノート マルチテーブル クエリ、thinkphp 学習ノート_PHP チュートリアル

thinkphp 学習ノート マルチテーブル クエリ、thinkphp 学習ノート_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:22:04926ブラウズ

マルチテーブルクエリのthinkphp学習メモ、

のthinkphp学習メモ

操作中、2つのテーブルのクエリでは問題はありませんでしたが、3つのテーブルのクエリで問題が発生し始めました

以下の3つのテーブルがあり、サブテーブルはplテーブル(uid、content)、userテーブル(id、username)、lybテーブル(uid、title)です

複数テーブルのクエリ操作にはいくつかの方法があります:

㈠モデルを見る(推奨)

ビューモデルを定義するには、ThinkModelViewModel を継承してから viewFields プロパティを設定するだけです

リーリー

クエリを表示:

ビュークエリは異なるモデルのクエリと同じであり、違いはありません。

リーリー

クエリ結果に重複データがあることがわかった場合は、グループ メソッドを使用して処理することもできます。

㈡参加

JOIN メソッドもコヒーレント操作メソッドの 1 つであり、複数のテーブルの列間の関係に基づいて 2 つ以上のテーブルのデータをクエリするために使用されます。

結合には通常、次のタイプがあります。異なるタイプの結合操作は、返されるデータの結果に影響します。

INNER JOIN : テーブル内に少なくとも 1 つの一致がある場合に行を返します (JOIN
と同等) LEFT JOIN : 右側のテーブルに一致するものがない場合でも、左側のテーブルからすべての行を返します
RIGHT JOIN : 左側のテーブルに一致するものがない場合でも、右側のテーブルからすべての行を返します
FULL JOIN : いずれかのテーブルに一致がある限り行を返します
結合メソッドは上記の 4 つのタイプをサポートできます:

上記3つのテーブルに対して同じ操作を実行します

リーリー

㈢テーブル

テーブルメソッドもモデルクラスのコヒーレント演算メソッドの一つで、主に演算対象のデータテーブルを指定するために使用されます。

使用方法

一般に、システムはモデルを操作するときに、現在対応するデータ テーブルを自動的に識別できるため、テーブル メソッドは通常次の目的で使用されます。

スイッチング操作のデータテーブル;
複数のテーブルに対する操作を実行します。

リーリー
注: テーブルメソッドはデフォルトですべてのフィールドの値をクエリします

THINKPHPの複数テーブルクエリの問題

2 つの方法:

複数のテーブル クエリ:

$list=M()->table(array('think_select'=>'this0','think_student'=>'this1','think_class'=> ; 'this2'))
->where('this0.stu_id=this1.id および this0.class_id=this2.id')
->field('this0.id this0_id,this1.id this1_id,this2.id this2_id ')->select();
SQL を生成:
select this0.id this0_id,this1.id this1_id,this2.id this2_id

from think_select this0,think_student this1,think_class this2
where this0.stu_id=this1.id およびthis0.class_id=this2.id

リンククエリ:

$list=M()->table("think_select this0")->join('think_student this1 on this0.stu_id=this1.id')
- >join('think_class this2 on this0.stu_id=this2.id')
->field('this0.id this0_id,this1.id this1_id,this2.id this2_id')->select();
SQL を生成:
select this0.id this0_id,this1.id this1_id,this2.id this2_id

from think_select this0 left join think_student this1 on this0.stu_id=this1.id
left join think_class this2 on this0.stu_id=this2.id

thinkphp で複数テーブルのクエリを記述する方法は?

ビューモデル

を次のように使用するにはclass ArticleViewModel extends ViewModel{
public $viewFields = array(
'Article' => array('id','title','content','key_id', 'task_id','aout','re','otime','url','correlation','c_length','ad','_type'=>'left'),
'Task' => array('_on'=>'Article.task_id=Task.id','task','num','able','user_id','lang','_type'=>'left'),
'ユーザー' => array('_on'=>'Task.user_id=User.id','manage','alie','belong_to','_type'=>'left'),
);
}
?>
詳細については、thinkphp マニュアルのビュー モデルのセクションを参照してください

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/851350.html技術記事複数テーブルクエリのthinkphp学習メモ、操作プロセスのthinkphp学習メモ、2テーブルクエリは問題ないが、3テーブルクエリで問題が発生し始めるテーブルは以下の3つとサブテーブルです。テーブルは...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。