我经常在我的模型和行为中创建小函数,为CakePHP中的查找操作的array
添加额外的条件,我一直在考虑实现这些函数的三种可能性。它似乎总是归结为三种可能的代码模式。
我将使用名为limitErrorCount
的函数演示这三种模式,这将为查找查询添加额外的规则。
public function limitErrorCount(array $conditions)
{
$conditions['AND'][] = 'Document.errors <'=>10;
return $conditions;
}
$conditions = array(....);
$conditions = limitErrorCount($conditions);
$records = $this->find('all',$conditions);
public function limitErrorCount(array &$conditions)
{
$conditions['AND'][] = 'Document.errors <'=>10;
return $conditions;
}
$conditions = array(....);
limitErrorCount($conditions);
$records = $this->find('all',$conditions);
public function limitErrorCount()
{
$conditions = array('AND'=>array('Document.errors <'=>10));
return $conditions;
}
$conditions = array(....);
$conditions = Hash::merge($conditions,limitErrorCount());
$records = $this->find('all',array('conditions'=>$conditions));
这三种模式都有效。
我想知道哪种方法最好的三种方法,也许是一些专家的PHP见解,为什么它更好。
答案 0 :(得分:1)
好主意,我希望看到像jQuery一样以链式方式实现它
$cnd = $this->Document->filterFreshOnes()->filterStarred()->filterByDaysAge('3');
$res = $this->Document->find('all', array('conditions'=>$cnd);
但是这需要将它保存在模型变量中,如果您忘记已经有一些过滤器,这可能会适得其反......;(