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