1

(以下の実用的な例を探してください)

こんにちは皆さん、

私はこれを1つのクエリに変換しようとしています:
Cakephpは、そのままスマートで、検索を呼び出すアイテムの一致する「多くの」オブジェクトをすべて収集します(つまり、2番目のテーブルのすべてのオブジェクトを収集します。 IDを使用してください)。ただし、これらの返されたオブジェクトには、「多くの」関係の対象となる2番目のオブジェクトもあります。それらのオブジェクトの情報も収集したいと思います。1つのクエリでこれを行うことは可能ですか?


実例:

House-たくさんあります-> People<-たくさんあります--Employer

家:
idaddress

人:
name、、、age_house_idemployer_id

雇用主:
id、、namelocation

をリクエストすると、に住んでいるhouseすべての人が返されます。それぞれにそれぞれを手に入れたいpeoplehouseemployersperson

それは一発で可能ですか?

4

2 に答える 2

1

Personモデルで次のコードを使用します。

public $belongsTo = array('Employer' => array(
                                              'className' => 'Employer', 
                                              'foreignKey' => 'employer_id'
                                              )
                          );

今、家をリクエストしてみてください。それはあなたが望むのと同じデータをあなたに返します。

于 2012-07-16T11:06:31.553 に答える
0

私は実際に少し明白で少し醜い解決策を発見しました。欠点は、いくつかの不要なクエリ(Houseすべてのレコードの収集などPerson)を実行しているように見えることです。より良い解決策をいただければ幸いです。

を使用する代わりにHouse、を使用しPersonました。

したがって、クエリがである場合、それは$this->House->findById($house_id)になりまし$this->Person->findAllByHouseId($house_id)た。結果は、から検索する場合ほど配列に適していませんHouseが、Cakeは関連するすべてのレコードを収集し、レコードと関連するレコードPersonも収集します。HouseEmployer

これが他の誰かに役立つことを願っています。私はまだもっとエレガントな解決策を探していますが、これは確かに機能的です。

于 2012-07-15T23:49:11.567 に答える