首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >转换为Laravel查询

转换为Laravel查询
EN

Stack Overflow用户
提问于 2016-10-10 07:11:36
回答 1查看 36关注 0票数 0

我要查询查询数据。那是文件。

代码语言:javascript
运行
复制
"SELECT        
     zk_z_hako * CASE WHEN  zk_n_iri>  0 THEN zk_n_iri ELSE 1 END
   + zk_z_bara 
   - ifnull(
                sum(
                        ns_hako 
          * CASE WHEN  zk_n_iri>  0 THEN zk_n_iri ELSE 1 END                
                  * CASE WHEN  ns_tr_kbn in (0,6) OR ( ns_tr_kbn = 1 AND ns_ns_kbn = 7) THEN 1
                         WHEN  ns_tr_kbn in (1,7)                                       THEN (-1)
                 ELSE  0
                        END
                  +  ns_bara
                  *  CASE WHEN  ns_tr_kbn in (0,6) OR ( ns_tr_kbn = 1 AND ns_ns_kbn = 7) THEN 1
                          WHEN  ns_tr_kbn in (1,7)                                       THEN (-1)
                  ELSE  0
                        END )
                ,0 )  AS TOTAL_BARA
FROM    t_table1
LEFT JOIN t_table2
                ON        ns_kno = zk_kno
AND         ns_show_flg = 0
AND     ns_ymd > 'Date param'      
WHERE        zk_kno = Value param;   

所以我不是拉拉维尔的主人。现在,我需要转换这个查询,以便与laravel一起工作。有人能帮我吗?

我得试试这个查询。

代码语言:javascript
运行
复制
$squery = 'zk_z_hako * CASE WHEN  zk_n_iri>  0 THEN zk_n_iri ELSE 1 END
   + zk_z_bara 
    ifnull(
                sum(
                        ns_hako 
          * CASE WHEN  zk_n_iri>  0 THEN zk_n_iri ELSE 1 END                
                  * CASE WHEN  ns_tr_kbn in (0,6) OR ( ns_tr_kbn = 1 AND ns_ns_kbn = 7) THEN 1
                         WHEN  ns_tr_kbn in (1,7)                                       THEN (-1)
                 ELSE  0
                        END
                  +  ns_bara
                  *  CASE WHEN  ns_tr_kbn in (0,6) OR ( ns_tr_kbn = 1 AND ns_ns_kbn = 7) THEN 1
                          WHEN  ns_tr_kbn in (1,7)                                       THEN (-1)
                  ELSE  0
                        END )
                ,0 )  AS TOTAL_BARA ';
        $param1= '20160310';
        $param2= '1972640100';
        $results = DB::table('table1')
          ->select($squery)
        ->leftJoin('table2', function($join) use ($param1)
            {
                $join->on('table1.ns_kno', '=', 'table2.zk_kno');
                $join->on('table1.ns_show_flg', '=', DB::raw(0));
                $join->on('ns_ymd','>',DB::raw("'".$param1."'"));
            })
        ->where('zk_kno', DB::raw($param2))
        ->toSql()

但是它返回了sql

代码语言:javascript
运行
复制
"select `zk_z_hako` as `CASE` from `t_zaikmst` left join `t_nsyutrn` on `t_nsyutrn`.`ns_kno` = `t_zaikmst`.`zk_kno` and `t_nsyutrn`.`ns_show_flg` = 0 and `ns_ymd` > '20160310' where `zk_kno` = 1972640100"

我不确定这是真的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-10 08:09:47

如果要定制select,则需要使用原始查询作为select参数,如下所示:

代码语言:javascript
运行
复制
->select(\DB::raw($squery))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39952943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档