Условия с и или заявлениями - PullRequest
0 голосов
/ 21 сентября 2011

Я понял это. Вот решение:

'conditions'=>array(
     'OR' => array(
          array('EavAttribute.attribute_code'=>'lastname'),                            
          array('EavAttribute.attribute_code'=>'firstname')
      ),
     'AND' => array(
          array('UserEntityVarchar.entity_id'=>$id)
     )
)

Я пытаюсь преобразовать этот запрос в запрос CakePHP, и у меня возникли некоторые проблемы с условиями. Независимо от того, как я форматирую условия, я всегда получаю второй запрос ниже.

Любая помощь с этим очень ценится.

Это запрос, который я пытаюсь повторить:

SELECT
    `UserEntityVarchar`.`value_id`,
    `UserEntityVarchar`.`attribute_id`,
    `UserEntityVarchar`.`entity_id`,
    `UserEntityVarchar`.`value`,
    `EavAttribute`.`attribute_code`
FROM
    `user_entity_varchars` AS `UserEntityVarchar`
LEFT JOIN `eav_attributes` AS `EavAttribute` ON(
    `UserEntityVarchar`.`attribute_id` = `EavAttribute`.`attribute_id`)
WHERE
     (UserEntityVarchar.entity_id = 1 AND
     EavAttribute.attribute_code = 'firstname') OR
     (UserEntityVarchar.entity_id = 1 AND
     EavAttribute.attribute_code = 'lastname')

Это запрос, который я продолжаю получать независимо от того, как я форматирую свое условие:

SELECT
    `UserEntityVarchar`.`value_id`,
    `UserEntityVarchar`.`attribute_id`,
    `UserEntityVarchar`.`entity_id`,
    `UserEntityVarchar`.`value`,
    `EavAttribute`.`attribute_code`
FROM
    `user_entity_varchars` AS `UserEntityVarchar`
LEFT JOIN `eav_attributes` AS `EavAttribute` ON(
    `UserEntityVarchar`.`attribute_id` = `EavAttribute`.`attribute_id`)
WHERE 
    ((`UserEntityVarchar`.`entity_id` = 1)
AND
    (`EavAttribute`.`attribute_code` = 'firstname'))
AND
    ((`UserEntityVarchar`.`entity_id` = 1)
AND
    (`EavAttribute`.`attribute_code` = 'lastname'))

Это условие, которое я использую:

'conditions'=>array(
    array(
     array('UserEntityVarchar.entity_id'=>$id),
     array('AND ' => array('EavAttribute.attribute_code'=>'firstname'))

    ),
    array('OR' =>
         array('UserEntityVarchar.entity_id'=>$id),
         array('AND ' => array('EavAttribute.attribute_code'=>'firstname'))
    )
)

1 Ответ

1 голос
/ 21 сентября 2011

Вы должны быть в состоянии сделать это так:

$this->Model->find('all', array('conditions' => array('OR' => array(

              array('UserEntityVarchar.entity_id' => 1, 
              'EavAttribute.attribute_code' => 'firstname'),

              array('UserEntityVarchar.entity_id' => 1, 
              'EavAttribute.attribute_code' => 'lastname')))));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...