【问题标题】:Convert query into cakePHP find statement将查询转换为 cakePHP 查找语句
【发布时间】:2011-06-11 15:08:36
【问题描述】:

谁能帮我把这个查询转换成 CakePHP 的 find 语句

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" 模型。(我知道表名不符合 cakephp 约定,但我必须使用这些名称)。由于我使用的是 sql server,因此我根据蛋糕约定为表格创建了 Synonyms

模型 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) 的问题

提前感谢。

【问题讨论】:

    标签: sql sql-server-2008 cakephp find cakephp-1.3


    【解决方案1】:

    除非有特殊原因使用find方法,否则我会简单地创建一个模型方法并使用query()来执行SQL语句。如果月份和年份是参数,请确保它们是整数以避免 SQL 注入攻击。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-22
      • 1970-01-01
      • 1970-01-01
      • 2017-02-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多