通常的做法是获取行为(链接到多个模型)来构建SQL查询的过滤器,然后读取属于该模型的表?
我有一个Behavior函数,用于对某些SQL条件进行数据库查询。我目前传递了$ this-> request->数据。
我在构建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-&gt; find来执行查询,这应该没问题,因为它是通用的。
$overlapresults = $model->find('all', array('conditions' => $overlapfilter));
答案 0 :(得分:0)
我已经回答了我自己的问题。
实际上为了构建过滤条件,我需要模型的名称,而不是表的名称,因为表的名称是复数名称,末尾带有“S”。
我用过 $型号 - &GT;名 从: CakePHP: get current model name in a controller对于我发现的表名,你也可以使用 $这 - &GT;模型 - &GT;表 cakephp - get table names and its column details