Cakephp 从数据源中删除()不会在find()之后立即触发
我有一个自定义数据源,我们称之为Cakephp 从数据源中删除()不会在find()之后立即触发,cakephp,amazon-sqs,Cakephp,Amazon Sqs,我有一个自定义数据源,我们称之为SQSDatasource。通常,对于find(),save(),甚至delete(),它都可以正常工作 使用SQSDatasource的模型,例如Job。作业中没有异常的逻辑 然而,我遇到了一个奇怪的反常现象 class TestShell extends AppShell { public $uses = array('Job'); public function main() { // This works fine.
SQSDatasource
。通常,对于find()
,save()
,甚至delete()
,它都可以正常工作
使用SQSDatasource
的模型,例如Job
。作业中没有异常的逻辑
然而,我遇到了一个奇怪的反常现象
class TestShell extends AppShell {
public $uses = array('Job');
public function main() {
// This works fine.
$job = $this->Job->find('first');
// The break point never gets called
$this->Job->delete('TEST!');
// This gets called
$this->out('This gets called.');
}
}
但是,如果我在调用$this->Job->delete()
之前删除$this->Job->find()
,它就可以正常工作<代码>删除()
将被调用
有人对此异常有任何线索吗?您没有执行查找的任何代码,例如在数据源中定义的read()函数。我怀疑find失败了,因此没有进行删除 删除“查找”后,就不会再有错误,删除也可以正常工作
请查看的文档,并确保已启用调试。可能会检查日志中没有显示的任何错误。我已设法找出问题所在。我的数据源代码实际上已经完成了
read()
,create()
等的完整实现,所有标准的CakePHP CRUD函数都可以很好地与我的数据源配合使用
我的问题主要是由于以下原因:
delete()
实际上在允许删除之前在内部执行find('count')
,这是我没有预料到的谢谢你回答这个问题。我已经大致找到了问题所在,部分原因是由于两个原因:I)Amazon SQS的不一致性;ii)我从不希望datasource在删除之前先进行查找(“计数”)。只是为了记录,datasource实际上是通过
read()
等完全实现的。我在下面对这个问题进行了解释。谢谢
class TestShell extends AppShell {
public $uses = array('Job');
public function main() {
// This works fine.
$job = $this->Job->find('first');
// The break point never gets called
$this->Job->delete('TEST!');
// This gets called
$this->out('This gets called.');
}
}