CakePHP软删除的数据仍然显示在模型关联中
我使用SoftDeletableBehavior作为我的地址模型。
这样设置当你删除一个地址时它并没有真正删除它,而是将数据库中的
deleted
列设置为1。
这也会改变你在地址模型的beforeFind
函数中的查询,只能拉出deleted != 1
的条目
当我通过像/addresses/show/43
这样的地址控制器查看地址时,这种方法有效。
但是我的Users
控制器hasMany
地址。所以,当我在用户控制器中并且我打电话给$this->find('first');
为了得到用户,我也得到了相关的地址。我希望这不会给我(轻柔)删除的地址但它确实如此。地址模型上的beforeFilter也从不被调用。
处理这个问题的正确方法是什么?
更新。
显然当我这样做时:
$data = $this->User->find('first',array('conditions' => array('User.id' => $id),'recursive' => 2));
我有一个$data['User]
数组和一个$data['Address]
数组(以及其他数组)。
但是这不会在地址模型中使用beforeFind过滤器。所以我得到了错误的数据。
但如果我这样做:
$data = $this->User->find('first',array('conditions' => array('User.id' => $id),'recursive' => 2));
$data['Address'] = $this->User->Address->find('all',array('conditions'=>array('user_id'=>$id)));
然后它确实在Address模型上使用beforeFind过滤器并返回正确的数据。
(当然以不同的格式[Address][0][id]
对[Address][0][Address][id]
)
我不明白的是,如果拉出的相关数据没有使用自己的模型来查找数据,那么重点是什么?这不是MVC的主要目的之一吗?
也许我只是不明白?或者我错过了什么?
有人可以赐教吗?
没有找到相关结果
已邀请:
3 个回复
款去芳尾脊
貉骂
肉簧咸缮