2012-03-28 112 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' => '') 
      ) 
     ) 
    ) 
)));