我在插件上的模型/表和核心应用程序中的模型/表之间进行HABTM连接时遇到了实际问题。
基本上我的核心应用程序有一个Items的模型,我的插件有一个购买模型。
一次购买可以是很多项目。
我已经定义了表格,我插件中的所有表格都有前缀itm_(表示他们正在处理项目)
该插件名为itemServices。
Join table是插件的一部分,是itm_purchases_items
HABTM代码(在Core中的Item上):
'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`)
答案 0 :(得分: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',
),