转换为Laravel查询

时间:2016-10-10 07:11:37

标签: laravel

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

所以我不是Laravel的主人。现在我需要转换此查询以使用laravel。有人可以帮帮我吗?

我必须尝试这个查询。

"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;   

但它返回sql

$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()

我不确定是真的。

1 个答案:

答案 0 :(得分:1)

如果您想进行自定义选择,则需要将原始查询用作select参数,如下所示:

->select(\DB::raw($squery))