2012-03-28 110 views
1

如何构建使用这些条件find()方法在CakePHP查询:CakePHP的复杂的查找查询

Find where 
MyModel.x = 1 and MyModel.y = 2 OR 
MyModel.x = 1 and MyModel.y value does not exist (or is equal to empty string) 

有人能告诉我,我该怎么去建立这样查找查询?

回答

4

我会给你一些指示,但你需要尝试做到这一点,因为它是非常基础的,它总是很好的练习。

在蛋糕的基本发现是在

$this->ModelName->find('all'); 

这在其默认窗体形式做了SELECT * from model_names(惯例是有奇异MODELNAME为复数表名 - model_names

要添加条件:

$this->ModelName->find('all', array('conditions' => array('ModelName.x' => 1)); 

添加和条件

$this->ModelName->find('all', array('conditions' => array(
    'ModelName.x' => 1, 'ModelName.y' => 2 
)); 

添加或条件

$this->ModelName->find('all', array('conditions' => array(
    'OR' => array(
     'ModelName.x' => 1, 'ModelName.y' => 2 
    ) 
)); 

融合两家

$this->ModelName->find('all', array('conditions' => array(
    'ModelName.y is not' => null, 
    'OR' => array(
     'ModelName.x' => 1, 'ModelName.y' => 2 
    ) 
)); 

// where y is not null and (x = 1 or y = 2) 

http://book.cakephp.org/1.3/view/1030/Complex-Find-Conditions

(顺便说一句,我肯定会有用户给你确切的答案,所以只取我的回答供你参考:))

3
$this->MyModel->find('all', array('conditions' => array(
    'OR' => array(
     array(
      'MyModel.x' => 1, 
      'MyModel.y' => 1 
     ), 
     array(
      'MyModle.x' => 1, 
      'OR' => array(
        array('MyModel.y' => NULL), 
        array('MyModel.y' => '') 
      ) 
     ) 
    ) 
)));