1
SELECT COUNT(*) FROM `users` where usergroup_id = 4 AND studio_id = 380 AND userstatus_id = 1

4このクエリでは、期待される出力の結果が得られますが、このクエリを実行すると、次のようになります。

$this->User->find('count',array('conditions'=>array(
                                        'User.studio_id'=>380,
                                        'User.usergroup_id'=>4,
                                        'User.userstatus_id'=>1)))

私はの結果を得ています8

ここでの問題は何だと思いますか?私の2番目のコードが間違っているように感じます。

私はcakePHPの初心者です。

あなたの助けは大いに感謝され、報われるでしょう!

4

1 に答える 1

1

クエリと CakePHPfind('count', ...は同じものを生成するはずです。(いくつかのコメントによると) 考えられる違いは、あなたの$recursiveレベルです ( CakePHP recursiveを参照してください)。

私は設定するだけの大ファンです:

public $recursive = -1;

-1 のままにしておくことが IMO のベスト プラクティスであるため、二度と心配する必要はありません。次に、関連付けられた追加のモデル データを取得したい場合は、CakePHP の Containableを使用してください。

サイト全体で -1 に設定したくない場合は、クエリの直前に設定してください。

$this->User->recursive = -1;
$this->User->find('count',array('conditions'=>array(
    'User.studio_id'=>380,
    'User.usergroup_id'=>4,
    'User.userstatus_id'=>1
)));

サイト ノート:$recursive -1 以外の値に設定することは危険信号です。これはちょっとクールなコンセプトですが、実際には、サイトが大きくなるにつれて多くの頭痛の種になります。上記のように AppModel で -1 に設定し、それが存在することさえ忘れてください。

于 2012-12-04T07:04:50.573 に答える