CakePHP 2 - 在Behavior中派生模型的表名

时间:2014-03-11 08:06:01

标签: cakephp model behavior cakephp-2.x

通常的做法是获取行为(链接到多个模型)来构建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));

1 个答案:

答案 0 :(得分:0)

我已经回答了我自己的问题。

实际上为了构建过滤条件,我需要模型的名称,而不是表的名称,因为表的名称是复数名称,末尾带有“S”。

我用过 $型号 - &GT;名 从: CakePHP: get current model name in a controller

对于我发现的表名,你也可以使用 $这 - &GT;模型 - &GT;表 cakephp - get table names and its column details