CakePHP拥有并且属于许多条件,并且没有EXISTS

时间:2012-12-14 09:07:46

标签: mysql sql cakephp

$conditions = Array
(
  [table] => products_pages
  [alias] => ProductsPage
  [type] => inner
  [foreignKey] => 
  [conditions] => Array
  (
   [0] => ProductsPage.product_id = Product.id
  )
)

我正在尝试设置NOT EXISTS条件,如下面的SQL语句:

SELECT * FROM products_pages,products 
WHERE NOT EXISTS (SELECT id 
                  from products_pages 
                  where products_pages.product_id = products.id)

所以基本上选择products_pages表中不存在的任何产品。

为CakePHP格式化该SQL语句并在此处替换它的正确方法是什么:

[conditions] =>排列    (    [0] => (在这里插入SQL的正确方法是什么?    )

真的很感谢你们的帮助,我一直在努力解决这个问题大约5个小时没有运气。谢谢!

1 个答案:

答案 0 :(得分:-1)

如果你没有找到使用CakePHP的方法,你总是可以使用queryhttp://book.cakephp.org/2.0/en/models/retrieving-your-data.html#model-query

在这种情况下,安全性不会因为您没有使用任何输入而受到损害。

无论如何,简单的事情只是在不止一步中完成:

//selecting the products in the productcs_pages table
$productsWithPages = /* query to get them*/

//getting an array of IDs
$productsWidthPagesIds = Hash::extract($productsWithPages, '{n}.Product.id');

//doing the NOT IN to select products without pages
$productsWithoutPages= $this->Product->find('all', 
        array('conditions' => 
             array( 'NOT' => array('Product.id' => $productsWidthPagesIds )
        )
);