0

やあ

次のSQLクエリをcakephpfind()形式で作成する必要があります。クエリ自体は正常に機能していますが、変更する必要があります。

$this->Part->query(
    "SELECT `parts`.`id`,`parts`.`part_name` 
     FROM `parts`  
     LEFT JOIN ( 
         SELECT `op` . * 
         FROM `order_parts` AS `op` 
         WHERE `op`.`order_id` =".$this->Session->read('orderid')."
     ) AS `vT` 
     ON ( `parts`.`id` = `vT`.`part_id` )
     WHERE `vT`.`part_id` IS NULL"
);  

ありがとう

4

1 に答える 1

1

関係がOrderHABTMPartであり、列がid、order_id、part_idのテーブルorders_partsがある場合は、次のようなことができるはずです。

まず、次の順序であるパー​​ツのIDを取得します。

//each Part has one OrdersPart per order
$this->Part->bindModel(array('hasOne' => array('OrdersParts')));
$parts = $this->Part->find('list', array(
  'fields' => array('Part.name'),
  'conditions' => array(
    'OrdersParts.order_id' => $this->Session->read('orderid'),
  ),
  'recursive' => 2
));

次に、順番になっていないパーツを入手します。

$this->Part->find('all', array(
  'conditions' => array(
    "NOT" => array('Part.id' => array_keys($parts))
  ),
));
于 2012-10-12T10:46:34.570 に答える