在cakephp v1.3中仅从数据库中获取“已启用”记录

时间:2010-06-29 06:40:07

标签: cakephp cakephp-1.3

有没有办法只获取cakephp v1.3中'status = 1'的模型记录?

我在网络应用程序的每个表中都创建了一个名为“status”的字段。

我有一个名为'Message'的模型。我想要的是只显示那些消息,包含在'status = 1'的搜索结果中。 “status = 0”的消息将不会显示,也不会包含在搜索结果中。

如果我能以cakePHP的方式做到这一点,请帮助我,现在作为临时解决方案我在每条消息的条件数组中使用'status = 1'。

由于

3 个答案:

答案 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()也应该没问题。