2012-02-24 2 views
0

せずに2つのテーブルの上に照会するには、私は「Objekt」という名前の私のモデルにしていますし、それがこの関係を持っていますCakePHPの:どのように参加

var ??? = array(
     'ObjektArtenInternet' => array(
      'className' => 'ObjektArtenInternet', 
      'foreignKey' => 'OBI_ID', 
      //'conditions' => '', 
      'fields' => 'OBI_SORTIERUNG', 
      //'order' => '' 
     ) 
    ); 

私は今、何をしたいかすると、この文は次のとおりです。

DISTINCT detailobjekt.OBI_ID、OBI_UET_BESCHREIBUNGを選択detailobjekt FROM OBI_SORTIERUNG、objektarten_internet detailobjekt.OBI_ID = objektarten_internet.OBI_ID

しかし、この選択を行うために正しい関係を設定する方法を理解することはできません。 With $belongsTo or $hasOne私はこの場合には必要のない結合をいつも得ています。上記の例のように2つのテーブルを照会するのは簡単です。

どうすればいいですか? 私を助けてください。 ありがとう!

答えて

0

CakePHPには、この種のクエリのORMサポートがありません。あなたが設定した関係は、このようなクエリを書くことはありません。あなたには2つのオプションのいずれかがあります。

1- ORMを使用して、関係に基づいてJOINを実行できるようにします。

2 $ this-> Model-> query();を使用して独自のクエリを作成します。

いずれのオプションの長所と短所を比較検討する必要があります。しかし、なぜあなたはJOINをしたくないですか?結合を許可することで何が問題になりますか?

さらに、MySQLはINNER JOINと同等の処理を実行します。このクエリは構文的にあなたと同じです:

SELECT * 
FROM <firstTable> a INNER JOIN <anotherTable> b 
ON a.<someColumn> = b.<anotherColumn> 
関連する問題