1

問題があります。関連するモデルを使用する条件を使用しながら、関連するモデルなしで、単一のレコードから単一のフィールドを取得する必要がありますか?

例:

Categories {name, id}  
Keywords {name, id}  
Articles {title, text, id, keyword_id, category_id}

Articles.idいつArticle.category_id=3などで最初に検索したいのですが。

Model->field('model.field',array(conditions))条件が外部モデルを使用していない限り、使用は機能します。($this->Model->recursive=4動作していません)。

使用Model->find('first', array(conditions))は問題なく機能しますが、必要のない関連データも取得するという事実を除いて、関連モデルの比較を使用する機能を無効にして再帰結果を制限します。

何かアドバイス?

編集

私の問題は、デバッガーが貧弱であることを除いて、model->readメソッドの使用中に再帰を制限することで解決されました。ただし、長期的には、おそらく、封じ込め可能な動作を使用しています。

4

2 に答える 2

1

find()メソッドは、オプションの1つとして引数を取りますfieldsrecursive適切なレベルの関係を確実に取得するために、引数を設定することもできます。

OPに基づいて、以下は関係に参加せずに必要なものを取得します。

$this->Article->find('first', array('recursive' => -1, 'fields' => array('Article.id'), 'conditions' => array('Article.category_id' => 3)));

要件が上記よりも強い場合は、バインディングモデルまたはContainableBehaviorを確認できます。しかし、あなたが説明したことから、上記は適切な解決策です。これらは過剰なIMOになります。

于 2011-05-15T19:17:42.757 に答える
1

Model->find()ロードされる関連付けを制限するための包含可能な動作と、結果を目的のフィールドのみに制限するためのfield引数を使用します。

于 2011-05-15T19:20:52.627 に答える