thinkphpマルチテーブルクエリー、2つ以上のフィールドを関連付ける
1571 ワード
最近のプロジェクトではtpフレームワークが使用されており、いくつかの小さな問題が記録されています.今日はtp連表クエリーの質問です:a表のuser_id関連bテーブルのid,aテーブルのrace_id関連cテーブルのrace_id,aテーブルのrace_idとuser_id関連dテーブルのrace_idとuser_id.4テーブルの関連付け、aテーブルとdテーブルの2つのフィールドの関連付け.tpは国内で最も優れたphpフレームワークとして,単純なjoin関連テーブルを提供した.サンプルコードを次に示します
もちろん、これは小さな例にすぎません.where条件のa.idはaテーブルのidフィールドを表し、b.idは同じです.LEFTJOINはphpでの連表クエリーでよく使われるもので、join()はずっと加算できます(テーブル名に対応するフィールドが存在する限り、すなわちa.user_id=b.idであり、aテーブルにはuser_idが必要であり、bテーブルにはidが必要であり、条件が成立します)
テーブルに重複するフィールドがあることはよく知られていますが、thinkphpのfield()を使用するのが私の解決策です.例:
a.name as a_nameとは、aテーブルのnameフィールドをa_に変更することを意味します.nameが表示されます.b.*は、bテーブルのすべてのデータを取得することを表します.本文はあなたにmid米店に注目して、分かち合い続けるのに役立つと思います...
$where = array(
'a.id'=>1,
'b.id'=>1,
);
$result = $this ->join('LEFT JOIN b ON a.user_id = b.id')
->join('LEFT JOIN c ON a.race_id = c.race_id')
->join('LEFT JOIN d a.race_id = d.race_id AND a.user_id = d.user_id')
->where($where)
->select();
もちろん、これは小さな例にすぎません.where条件のa.idはaテーブルのidフィールドを表し、b.idは同じです.LEFTJOINはphpでの連表クエリーでよく使われるもので、join()はずっと加算できます(テーブル名に対応するフィールドが存在する限り、すなわちa.user_id=b.idであり、aテーブルにはuser_idが必要であり、bテーブルにはidが必要であり、条件が成立します)
テーブルに重複するフィールドがあることはよく知られていますが、thinkphpのfield()を使用するのが私の解決策です.例:
$result = $this ->join('LEFT JOIN b ON a.user_id = b.id')
->join('LEFT JOIN c ON a.race_id = c.race_id')
->join('LEFT JOIN d a.race_id = d.race_id AND a.user_id = d.user_id')
->where($where)
-> field('a.name as a_name , b.*,c.&,d.*')
->select();
a.name as a_nameとは、aテーブルのnameフィールドをa_に変更することを意味します.nameが表示されます.b.*は、bテーブルのすべてのデータを取得することを表します.本文はあなたにmid米店に注目して、分かち合い続けるのに役立つと思います...