CAKEPHP MYSQL订单问题

时间:2012-08-25 10:58:22

标签: mysql cakephp

我遇到了一个问题,我不知道如何解决它 我有一张桌子,orders
我们的客户只想显示未经批准的订单 首先,我认为这很容易,使用find('order_status!='=>'approved' ) ...
它显示数据库错误

  

1064 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在'Order IN('12',NULL,'',NULL,'08/22/2012','Yes','No',NULL,附近使用正确的语法) '\ r \ n在第1行测试da'

多次失败后。(删除所有关联的表,检查语法,在phpadmin中写入sql)

我认为问题是订单是一个保留字,而Cakephp会自动将外来设置为订单。

所以我使用了查询$ this-> Order-> query(“SELECT * FROM orders where order_status ='approved';”); 我又收到了一个错误:

  

错误:SQLSTATE [42S22]:找不到列:1054未知列'订单'   在'where子句'

实际上,CakePHP仍然做同样的事情,“......来自orders AS Order...

来自网址:/ orders?order_status =已批准,有效,但我不知道如何表达'!= approved'

如何解决?我不想重命名订单表。

2 个答案:

答案 0 :(得分:0)

应该是这样的:

$this->Order->find('all', array(
   'conditions'=>array(
     'NOT'=>array('Orders.order_status'=>'approved')
   )
));

此外,你应该使用整数1或0来表示这种类型的东西而不是字符串,更容易在ifs中使用。对于未批准的0(默认),例如1。

答案 1 :(得分:0)

这是来自我的老师,它有效。

$this->set('orders', $this->paginate('Order', array("Order.order_status !=" => 'Approved')));

我仍然不知道为什么它不起作用,首先使用find(all,condition)获取数组,然后将其分配给paginate ......