0

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

1064 - 您的 SQL 语法有错误;查看与您的 MySQL 服务器版本相对应的手册,了解在“Order IN ('12', NULL, '', NULL, '08/22/2012', 'Yes', 'No', NULL, ' \r\n 测试 da' 在第 1 行

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

我认为问题是 Order 是一个保留字,Cakephp 会自动将外星人设置为 order。

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

错误:SQLSTATE [42S22]:找不到列:1054 'where 子句'中的未知列 'orders'

实际上,CakePHP 仍然做同样的事情,“...FROM ordersAS Order...

来自 url:/orders?order_status=approved,它可以工作,但我不知道如何表达 '!=approved'

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

4

2 回答 2

0

它应该是这样的:

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

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

于 2012-08-25T11:07:00.133 回答
0

这是我老师说的,效果很好。

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

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

于 2012-08-26T22:55:58.597 回答