我们有可以种植到地块中的地块和豆类。
我绝对决定使用以下内容查找所有者拥有的所有图表,其中包含一个bean。
$ plots = $ this-> Plot-> findAllByOwnerAndBean_id(uid,'> 0');
但是,它为我提供了SQL WHERE
Plot .
所有者= '15' AND
Plot .
bean_id = '> 0'
This suggests it may be impossible,但我觉得它不是确定的。 (可能,甚至相关的是2.2?)它可能是,所以问题是双重的:
如何从findBy中获得我想要的东西,如果我真的不能,我怎么能避免使用比以下更少的代码,我可以确认它有效?
$plots = $this->Plot->find('all', array(
'conditions' => array(
'owner' => uid,
'bean_id >' => 0
)
));
答案 0 :(得分:1)
我看不出魔术方法怎么可能(可以使用DboSource :: expression()但是如果它的用户输入你必须自己清理它)。但是,您可以在模型中创建辅助方法。
class Plot extends AppModel {
public function findAllByOwnerAndBeanId($owner, $beanId) {
return $this->find('all', array(
'conditions' => array(
'owner' => $owner,
'bean_id >' => $beanId,
),
));
}
}
编辑:您可以尝试以下操作,但请注意,它未经过测试。
$ds = $this->Plot->getDataSource();
$plots = $this->Plot->findAllByOwnerAndBean_id($uid, $ds->expression('> ' . intval($userInputtedBeanId)));
Sanitize::escape()
可能更好,而不是intval。