获取行为(链接到多个模型)为 SQL 查询构建过滤器,然后读取属于该模型的表的通常做法是什么?
我有一个 Behavior 函数,该函数旨在使用某些 SQL 条件进行数据库查询。我目前传入 $this->request->data。
我在构建 SQL 条件时遇到问题,因为我不确定如何派生表的名称(对应于模型)。例如,请参见下文,我想将表名(以及模型名称) “ BillingCenterDetail ”更改为我可以在不同模型中使用的通用名称。我希望根据模型名称自动派生此表名称。我不确定我是否可以为此使用 $model 参考。
public function saveWithTimeConstraintCheck(Model $model, $data) {
//FIND ALL RECORDS THAT OVERLAP
$overlapfilter = array(
'BillingCenterDetail.billing_center_id =' => $data['BillingCenterDetail']['billing_center_id'],
'BillingCenterDetail.startdate <=' => $data['BillingCenterDetail']['enddate'],
'BillingCenterDetail.enddate >=' => $data['BillingCenterDetail']['startdate']
);
...构建过滤器后,我可以使用 $model->find 执行查询,这应该没问题,因为它是通用的。
$overlapresults = $model->find('all', array('conditions' => $overlapfilter));