CakePHP 2 - Получение имени таблицы модели в Behavior

Какова обычная практика получения поведения (связанного с несколькими моделями) для создания фильтров для SQL-запросов, а затем чтения таблицы, принадлежащей этой модели?

У меня есть функция поведения, которая предназначена для выполнения запроса к базе данных с определенными условиями 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));

person aDvo    schedule 11.03.2014    source источник


Ответы (1)


Я ответил на свой вопрос.

И на самом деле для создания условий фильтра мне нужно было имя модели, а не имя таблицы, потому что имя таблицы — это имя во множественном числе с буквой «S» в конце.

Я использовал $Model->name From: CakePHP: получить текущее имя модели в контроллер

Я обнаружил, что для имен таблиц вы также можете использовать $this->Model->table cakephp - получить имена таблиц и сведения о столбцах

person aDvo    schedule 11.03.2014
comment
Обычно безопаснее использовать $Model->alias, так как это будет учитывать имена, присвоенные моделям, на которые ссылаются через ассоциации. Когда это не так, alias совпадает с name, поэтому он работает так же хорошо в случае по умолчанию. - person beporter; 21.05.2015