我遇到了一个问题,我不知道如何解决它
我有一张桌子,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'
如何解决?我不想重命名订单表。
答案 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 ......