使用Set :: extract过滤数据集的一部分

时间:2011-03-07 21:20:13

标签: mysql cakephp

我有一个查询从数据库中查找Homes,以及来自相关表的一些额外数据,如下所示:

$homes_data = $this->Home->find('all',array(
    'conditions'=>$conditions,
    'order'=>array('Home.mls_status ASC','Home.num DESC'),
    'contain'=>array('Realtor.show_price','Realtor.show_address','HighlightImage.num')
))

此时,我希望能够使用Set :: extract来过滤我的结果集,以删除MLS编号无效的任何结果,在这种情况下,这意味着不完全是6位数字:

$homes_data = Set::extract('/Home/[mls=/^[[:digit:]]{6}$/]', $homes_data);

这个问题是它丢失了数组的Realtor和HighlightImage结果。所以:

有没有一种简单的方法来重建这个,以保持有效MLS家庭的相关数据?

如果没有这个,有没有办法在SQL查询中使用条件“必须是数字且长度恰好为6位”,最好是将它保持在整洁,惯用的CakePHP范围内?

1 个答案:

答案 0 :(得分:0)

thesunneversets,

如果数据输入期间的验证不是一个选项,则可能需要编写自定义模型函数以保持控制器的精简。 您应该能够为模型设置验证规则,并在此自定义函数中手动使用验证。

<强> Edit0: 另一种方法是将现有数据映射到您最喜欢的值集。