2016-05-13 139 views
0

你好朋友我有这个查询使用sql编辑器运行,但我不知道如何使用laravel.please编写这个查询帮助我。如何在laravel中编写sql查询

SELECT 
    date, 
    memo, 
(COALESCE(CASE WHEN drcr = 'dr' THEN amount END,0)) total_debits, 
(COALESCE(CASE WHEN drcr = 'cr' THEN amount END,0)) total_credits, 
@b := @b + (COALESCE(CASE WHEN drcr = 'cr' THEN amount END,0)) - (COALESCE(CASE WHEN drcr = 'dr' THEN amount END,0)) balance 
FROM 
(SELECT @b := 0.0) AS dummy 
CROSS JOIN 
tbl_bankrecords 
ORDER BY 
date 

回答

0

原始表达式

有时你可能需要在查询中使用原始的表达。这些表达式将作为字符串注入查询中,因此请小心不要创建任何SQL注入点!要创建原始表达式,你可以使用DB ::原始方法:

$users = DB::table('users') 
    ->select(DB::raw('count(*) as user_count, status')) 
    ->where('status', '<>', 1) 
    ->groupBy('status') 
    ->get(); 

Laravel Doc for Raw Queries

另外:

$someVariable = Input::get("some_variable"); 

$results = DB::select(DB::raw("SELECT * FROM some_table WHERE some_col = :somevariable"), array('somevariable' => $someVariable)); 

http://fideloper.com/laravel-raw-queries

0

你可以试试这个:

Model::select(DB::raw('SELECT 
    date 
,memo 
,(COALESCE(CASE WHEN drcr = 'dr' THEN amount END,0)) total_debits 
,(COALESCE(CASE WHEN drcr = 'cr' THEN amount END,0)) total_credits, 
@b := @b + (COALESCE(CASE WHEN drcr = 'cr' THEN amount END,0)) - (COALESCE(CASE WHEN drcr = 'dr' THEN amount END,0)) balance'))->get(); 
+0

你好亚洲时报Siddharth如何添加此part.will请你ellaborate it.FROM (SELECT @b:= 0.0)作为虚拟 CROSS JOIN tbl_bankrecords ORDER BY 日期 – akash

+0

只是尽量把所有你所提到的事情'Model :: select(DB :: raw('把你的原始查询放在这里')) - > get();'。我不确定,但这应该起作用 – Siddharth