我有一个自定义数据源,我们称之为SQSDatasource
。对于find()
,save()
,甚至delete()
,它工作正常。从数据源删除()不会立即触发find()
class SQSDatasource extends DataSource {
public function delete(Model $Model, $conditions = null) {
// Deliberate break point to ensure that this function is being called
print_r($conditions);
exit();
// I have my proper delete logic here, which works fine usually
}
}
模型,说Job
使用该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()
,它完美的罚款。 delete()
会被调用。
任何人有任何线索在这种异常?
感谢您回答这个问题。我大致了解问题的所在,其部分原因有两个:i)亚马逊SQS不一致; ii)我从不期望数据源在删除之前首先执行查找(“计数”)。 – uzyn 2012-07-30 18:17:03
只是为了记录,数据源实际上是用'read()'等完全实现的。我在下面给这个问题添加了一个解释。谢谢。 – uzyn 2012-07-30 18:35:50