当用户搜索ajax时在控制器中获取数据的函数
这是我的代码:
$receiptNum = Request::get('receiptNum');
// echo $receiptNum = 123456
DB::connection()->enableQueryLog();
$q = DB::table('tbl_receipt AS r')
->join('company AS com', 'r.com_id', '=', 'com.com_id')
->join('branches AS b', 'com.b_id', '=', 'b.b_id')
->join('employee AS e', 'r.created_by', '=', 'e.e_id')
->where('r.receipt_code','=',$receiptNum)
->get();
$query = DB::getQueryLog();
var_dump($query);
我不知道我的代码遗漏了什么,它是这样显示原始sql:
SELECT *
FROM "tbl_receipt" AS "r"
INNER JOIN "company" AS "com" ON "r"."com_id" = "com"."com_id"
INNER JOIN "branches" AS "b" ON "com"."b_id" = "b"."b_id"
INNER JOIN "employee" AS "e" ON "r"."created_by" = "r"."e_id"
WHERE "r"."receipt_code" = ?
我尝试用num 123
代替$receiptNum
进行测试,raw sql
中也显示?
,请帮我解决
这里的"?"是因为它是一个语句。如果你想要一个字符串,你必须替换。
我的灵感来自https://gist.github.com/JesseObrien/7418983
,例如我做了这个
$q = DB::table('tbl_receipt AS r')
->join('company AS com', 'r.com_id', '=', 'com.com_id')
->join('branches AS b', 'com.b_id', '=', 'b.b_id')
->join('employee AS e', 'r.created_by', '=', 'e.e_id')
->where('r.receipt_code','=','123') ;
$sql = $q->toSql();
// $bindings = $q->getBindings();
foreach($q->getBindings() as $binding)
{
$value = is_numeric($binding) ? $binding : "'".$binding."'";
$sql = preg_replace('/?/', $value, $sql, 1);
}
var_dump($sql);