1

ユーザーが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" = ?

テスト用に$receiptNumnumに置き換えようとしていますが、 にも表示されています。解決するのを手伝ってください。123?raw sql

4

1 に答える 1

1

「?」ステートメントだからあります。文字列が必要な場合は、交換する必要があります。

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);
于 2016-08-24T10:55:56.903 に答える