#6041: Model->find "NOT" does not work as expected
---------------------------+------------------------------------------------
    Reporter:  datac0re    |          Type:  Bug   
      Status:  new         |      Priority:  Medium
   Milestone:  1.2.x.x     |     Component:  Model 
     Version:  1.2 Final   |      Severity:  Normal
    Keywords:  Model NOT   |   Php_version:  PHP 5 
Cake_version:  1.2.0.7962  |  
---------------------------+------------------------------------------------
 In 1.2.0.7962 when crafting the following conditions, the generated SQL
 does not match with what I would expect. Maybe this is a bug, maybe it's
 by design, but if it is by design, I feel that the behavior is counter-
 intuitive and may cause people to not get what they are looking for (it
 happened to me!).

 Example:

 $model->find('all', array(
  'conditions' => array(
      'id >' => 25
      'NOT' => array(
           'src' => '',
           'lastapp' => 'MeetMe'
      )
  )
 ));

 I would expect the SQL to generate the following:

 1. WHERE id > 25 AND NOT (src = '' and lastapp = 'MeetMe')

 instead, this is what is generated:

 2. WHERE id > 25 AND (NOT (`src` = '') AND NOT (`lastapp` = 'MeetMe'))

 The two statements are NOT equal (i.e. the NOT operator isn't
 distributive)

 See the following tests:

 Ex 1:
 src = ''
 lastapp = 'MeetMe'

 Query 1: NOT (TRUE and TRUE) = FALSE
 Query 2: NOT (TRUE) and NOT (TRUE) = FALSE

 Ex 2:
 src = 'anything'
 lastapp = 'MeetMe'

 Query 1: NOT (FALSE AND TRUE) = TRUE
 Query 2: NOT (FALSE) and NOT (TRUE) = FALSE

 Ex 3:
 src = ''
 lastapp = 'anything'

 Query 1: NOT (TRUE AND FALSE) = TRUE
 Query 2: NOT (TRUE) and NOT (FALSE) = FALSE

 Ex 4:
 src = 'anything'
 lastapp = 'anything

 Query 1: NOT (FALSE AND FALSE) = TRUE
 Query 2: NOT (FALSE) and NOT (FALSE) = TRUE

 Example 2 and 4 show that the statements are not equal. I've verified it
 by also doing both versions of the queries and getting counts back that
 differ.

-- 
Ticket URL: <https://trac.cakephp.org/ticket/6041>
CakePHP : The Rapid Development Framework for PHP <https://trac.cakephp.org/>
Cake is a rapid development framework for PHP which uses commonly known design 
patterns like ActiveRecord, Association Data Mapping, Front Controller and MVC. 
Our primary goal is to provide a structured framework that enables PHP users at 
all levels to rapidly develop robust web applications, without any loss to 
flexibility.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"tickets cakephp" group.
To post to this group, send email to tickets-cakephp@googlegroups.com
To unsubscribe from this group, send email to 
tickets-cakephp+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/tickets-cakephp?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to