Конвертировать запрос в cakePHP найти оператор - PullRequest
0 голосов
/ 19 января 2011

Может ли кто-нибудь помочь мне преобразовать этот запрос в оператор поиска CakePHP

SELECT
    SUM(ISNULL(tg_prd_value,0)) as total,MAX(tblMarketingArea.mkt_Area_ID) as mkt_Area_ID,MAX(tblMarketingArea.mkt_Area) as mkt_Area
FROM
    tblTarget right outer join
    tblMarketingArea on (tblMarketingArea.mkt_Area_ID = tblTarget.tg_area_id and tblTarget.tg_month = 1 and tblTarget.tg_year = 2011)
where tblMarketingArea.isDeleted!=1
GROUP BY
    tblMarketingArea.mkt_Area_ID order by tblMarketingArea.mkt_Area_ID

У меня есть "Target" и "MarketingArea" модель. (IЯ знаю, что имена таблиц не соответствуют конвенции CakePHP, но я должен использовать эти имена).Поскольку я использую sql server , я создал Синонимы для таблиц в соответствии с условным обозначением торта

модель MarketingArea (marketing_area.php)

class MarketingArea extends AppModel{
   var $name='MarketingArea';
   var $primaryKey='mkt_Area_ID';
 }

я пробовал эту привязку

$this->bindModel(array(
        'hasMany' => array(
            'Target' => array(
                'foreignKey' => 'tg_area_id',
                'conditions' => array(
                    'tg_month' => 1,
                    'tg_year' => 2011
                    )
                                 )
                          )
                     )
                );

Но все же я столкнулся с проблемой с SUM(tg_prd_value)

thankz in advace.

1 Ответ

3 голосов
/ 19 января 2011

Если нет особых причин для использования метода find, я просто создал бы метод модели и использовал бы query() для выполнения оператора SQL.И если месяц и год являются параметрами, убедитесь, что они являются целыми числами, чтобы избежать атаки SQL-инъекцией.

...