0

問題が発生しましたが、解決方法がわかりません。
テーブルがあります。orders
クライアントは、「承認されていない」注文のみを表示したいと考えています。
まず、簡単だと思ったfind('order_status!='=>'approved' )...
データベースエラーを表示する

1064 - SQL 構文にエラーがあります。'Order IN ('12', NULL, '', NULL, '08/22/2012', 'Yes', 'No', NULL, ' \r\n test da' 1 行目

何度も失敗した後(関連するすべてのテーブルを削除し、構文をチェックし、phpadminでsqlを書き込みます)

問題は Order が予約語であり、Cakephp が自動的にエイリアンを順序として設定することだと思いました。

そこで、クエリ $this->Order->query("SELECT * FROM orders where order_status = 'approved';"); を使用しました。別のエラーが発生しました:

エラー: SQLSTATE [42S22]: 列が見つかりません: 1054 不明な列 'orders' in 'where 句'

orders実際、CakePHP は「... FROM AS Order...」と同じことを行います。

from 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) を使用して配列を取得し、それを paginate に割り当てると、なぜ機能しないのかまだわかりません...

于 2012-08-26T22:55:58.597 に答える