0

プラグインのモデル/テーブルとコア アプリケーションのモデル/テーブルの間で HABTM 結合を行う際に実際の問題が発生しています。

基本的に、コア アプリケーションにはアイテムのモデルがあり、プラグインには購入のモデルがあります。

1 回の購入で複数のアイテムを購入できます。

テーブルを定義しました。プラグインのすべてのテーブルにはプレフィックス itm_ が付いています (アイテムを処理していることを示すため)。

プラグインは itemServices と呼ばれます。

結合テーブルはプラグインの一部であり、itm_purchases_items です

HABTM コードは (コア内のアイテム上):

'itemServices.Purchase' => array(
  'className' => 'itemServices.Purchase',
  'joinTable' => 'itm_purchases_items',
  'foreignKey' => 'item_id',
  'associationForeignKey' => 'purchase_id',
  'unique' => 'keepExisting',
),

および (プラグインでの購入時):

'Item' => array(
  'className' => 'Item',
  'joinTable' => 'itm_purchases_items',
  'foreignKey' => 'purchase_id',
  'associationForeignKey' => 'item_id',
  'unique' => 'keepExisting',
 )

自動生成されたクエリが結合の片側に次の表記法を使用しようとしているため、SQL エラーが発生します

`itm_purchases` AS `itemServices`.`Purchase` 

これは無効なクエリを作成しています。

これを行う正しい方法に関するアイデアはありますか?

生成された SQL は (db 名が削除されました)

SELECT `itemServices`.`Purchase`.`id`,
       `itemServices`.`Purchase`.`customer_id`,
       `itemServices`.`Purchase`.`agreement_number`,
       `itemServices`.`Purchase`.`total_value`,
       `itemServices`.`Purchase`.`item_count`,
       `itemServices`.`Purchase`.`created`,
       `itemServices`.`Purchase`.`modified`,
       `purchases_items`.`purchase_id`,
       `purchases_items`.`item_id`,
       `purchases_items`.`created`,
       `purchases_items`.`modified`
FROM
        `itm_purchases` AS `itemServices`.`Purchase` 
JOIN 
        `itm_purchases_items` AS `purchases_items`
ON
       (`purchases_items`.`item_id` = 18 AND `purchases_items`.`purchase_id` = `itemServices`.`Purchase`.`id`)
4

1 に答える 1

0

問題を発見し、

'itemServices.Purchase' => array(
  'className' => 'itemServices.Purchase',
  'joinTable' => 'itm_purchases_items',
  'foreignKey' => 'item_id',
  'associationForeignKey' => 'purchase_id',
  'unique' => 'keepExisting',
),

実際には次のようになります。

'Purchase' => array(
  'className' => 'itemServices.Purchase',
  'joinTable' => 'itm_purchases_items',
  'foreignKey' => 'item_id',
  'associationForeignKey' => 'purchase_id',
  'unique' => 'keepExisting',
),
于 2012-08-20T19:32:38.033 に答える