有没有办法只获取cakephp v1.3中'status = 1'的模型记录?
我在网络应用程序的每个表中都创建了一个名为“status”的字段。
我有一个名为'Message'的模型。我想要的是只显示那些消息,包含在'status = 1'的搜索结果中。 “status = 0”的消息将不会显示,也不会包含在搜索结果中。
如果我能以cakePHP的方式做到这一点,请帮助我,现在作为临时解决方案我在每条消息的条件数组中使用'status = 1'。
由于
答案 0 :(得分:1)
我将其包含在beforeFind()
回调方法中。您可以将其包含在每个模型的回调中(但每个模型只需一次 - 不是每个查询),或者您可以将其应用于AppModel
以便所有其他模型继承它。
在beforeFind()
回调中,您可以修改查询的结构。在这种情况下,您将条件array( 'status' => 1 )
应用于传入的查询。转储参数数据结构以查看正在发生的事情,我认为这对您有意义。
请注意,如果您选择在AppModel
中执行此操作,并且将来必须创建特定于模型的beforeFind
回调,则需要确保调用{{1}在你的子类'parent::beforeFind()
方法。
答案 1 :(得分:0)
找到 here 的答案。在此之前,beforeFind()回调非常方便。
像这样public function beforeFind($conditions) {
if(!isset($conditions['conditions']['Message.status']) && !isset($conditions['conditions']['status'])) {
$conditions['conditions']['Message.status'] = 1;
}
return $conditions;
}
答案 2 :(得分:0)
基本上你是在谈论软删除行为。有一个here对我而言,它并不完美,但对于简单的应用程序,它可以完成这项工作。在评论中,您也可以看到改进:)
但是在AppModel中扩展beforeFind()也应该没问题。