0

获取行为(链接到多个模型)为 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));
4

1 回答 1

0

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

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

我使用 $Model->name From: CakePHP: get current model name in a controller

对于表名,我发现你也可以使用 $this->Model->table cakephp - 获取表名及其列详细信息

于 2014-03-11T08:35:16.607 回答