2012-07-15 148 views
3

我有一个用户和一个报表,与HABTM关系相关。从HABTM表删除关联

我可以保存在reports_users表中创建正确记录的报告,我可以使用$this->User->ReportsUser->..等查看关系表。

现在我想删除reports_users表中的特定行,但似乎无法做到这一点。

我曾尝试以下:

$this->User->ReportsUser->deleteAll(array(
    'ReportsUser.report_id' => $this->data['Report']['report_id'], 
    'ReportsUser.user_id' => $this->data['Report']['user_id'] 
)); 

..但它会删除所有与给定USER_ID行,此查询:

Bad delete query

我在做什么错在这里。这是deleteAll调用中的错误数据吗?

我不想删除任何用户或报告,只是他们之间的关系。

我可以确认表名是正确的,并且变量存在并被设置。

+0

我在这里看不到太多错误。你能确保列名确实是'report_id'吗? – Magnus 2012-07-15 22:16:23

+0

@Magnus,是的,我相信。 – joakimdahlstrom 2012-07-16 09:08:20

+0

如果删除'user_id'条件会发生什么?什么是生成的查询? – Magnus 2012-07-16 09:32:24

回答

1

你的代码似乎没有错误。您的$this->data['ReportUser']['report_id']有问题。最好的方法是首先尝试打印$this->data。并检查它是否存在?

出于安全原因,请使用第二个参数$cascade = false,并使用$this->ReportUser->unbindModel()方法解除所有ReportUser模型关联。

另一个原因似乎是直接通过 $this->User->ReportUser. Try to use $this->ReportUser->deleteAll('your conditions', false);删除数据。

请问是否不适合你。

+0

感谢您的回复。 $ this-> ReportUser不是我的对象,我只能使用$ this-> User-> ReportsUser ..所有的变量都存在。 – joakimdahlstrom 2012-07-16 09:07:54