2017-06-14 3 views
0

当社はQcubed PHPフレームワークを使用してアプリケーションを継承しました。このフレームワークの機能の1つは、QQueryのクエリ方法です。 QQueryを使用して2つの列にある2つのテーブル間で結合を作成できるかどうか判断できませんでした。QCubed - 複数の列にテーブルを結合する

まだQCubed開発者はいますか?

答えて

0

まだQCubed開発者はいますか? - >はい、それらの多くの。アクションのほとんどは

https://github.com/qcubed/qcubed

githubの上で見つけることができジョイン: QQueryについての楽しい事は正しい外部キーがテーブル間に設定されている場合、それは自動的にテーブルを結合することです。例のページが、この情報のトンを持って、それをチェックアウト:

http://qcu.be/examples/index.php

余分なヒントを:あなたがそれらをロードする前に、あなたの結合を定義してみてください。関連オブジェクトが要求されたときにQcubedは自動的に結合を行いますが、事前にそれらを拡張する方が良いです。

クイック例:

//loads a Person object into memory 
//select * from person where id = 1; 
$objPerson = Person::Load(1); 
echo $objPerson->Name . ' lives in ' . $objPerson->Town->Name;//will cause a query in the style "select * from town where id=x;" 

//loads a Person object into memory, and joins the Town table. 
//select * from person LEFT JOIN town on town.id = person.town_id where id = 1; 
$objPerson = Person::Load(1, QQ::Clause(QQ::Expand(QQN::Person()->Town))); 
echo $objPerson->Name . ' lives in ' . $objPerson->Town->Name;//no extra query, town was already joined by the expand. 

両方が同じデータが返され、後者は、より効率的です。

2つの列をプライマリとすることに関する部分に答えるには:私は100%確実ではありません。この方法ではQCubedを使用したことはありません。しかし、http://qcu.be/examples/vendor/qcubed/framework/assets/php/examples/code_generator/primary_keys.phpには次のようなものがあります。

QCubedでは、複数列の主キーが定義されているテーブルをサポートしています。複数列の主キーを持つ表の場合、QCubedはオブジェクト自体を完全に生成します。ただし、この生成されたオブジェクトを別のテーブルの関連オブジェクトとして使用することはできません(つまり、QCubedは複数列の外部キーをサポートしていません)。ただし、これらのオブジェクトに生成されたすべてのLoadメソッドでは、複数列の外部キーを使用するテーブルを使用してアプリケーションを完全に開発することは可能です。基本的には、複数列の外部キーを使用して関連オブジェクトにアクセスする場合は、そのオブジェクトのLoadメソッドを直接呼び出してそのオブジェクトを取得することができます。

外部キーなしでリレーションシップを定義する場合は、ローカルインストールでcodegen.xmlファイルをチェックしてください。

+0

ありがとうZunderscore、それは参考になったが、私はそれが2列の結合に関する私の主な質問に対処したとは思わない。私は、1つのテーブルが2つのフィールドの値に基づいて別のテーブルに関連する関係を指しています。自動結合により、2つのフィールドの値に基づいて関連テーブルが検索されますか? – WillyPowwow

+0

@willyPowwow私は複数の列の主キーに関する情報を追加しました。 – Zunderscore

関連する問題