0

有什么方法可以只获取 cakephp v1.3 中“status = 1”的模型记录?

我在我的 Web 应用程序的每个表中创建了一个名为“状态”的字段。

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

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

谢谢

4

3 回答 3

1

我会将其包含在beforeFind()回调方法中。您可以将它包含在每个模型的回调中(但每个模型只包含一次 - 而不是每个查询),或者您可以将其应用于您的,AppModel以便您的所有其他模型都继承它。

beforeFind()回调中,您可以修改查询的结构。在这种情况下,您会将条件array( 'status' => 1 )应用于传入的查询。转储参数数据结构以查看会发生什么,我认为这对您来说很有意义。

请注意,如果您选择在您的程序中执行此操作AppModel并且将来必须创建一个特定beforeFind于模型的回调,您需要确保调用parent::beforeFind()您的子类的beforeFind()方法。

于 2010-06-29T11:19:23.780 回答
0

在这里找到答案beforeFind() 回调对此很方便。

像这样

public function beforeFind($conditions) {
    if(!isset($conditions['conditions']['Message.status']) && !isset($conditions['conditions']['status'])) {
        $conditions['conditions']['Message.status'] = 1;
    }
    return $conditions;
}
于 2010-06-29T09:20:52.480 回答
0

基本上你说的是软可删除行为。这里有一个对我来说它并不完美,但对于简单的应用程序它可以完成这项工作。在评论中,您也可以看到改进:)

但是在 AppModel 中扩展 beforeFind() 也应该没问题。

于 2010-06-29T17:36:19.683 回答