Laravel型号,select十六进制查询

Laravel model, select query with hexadecimal

我在从 laravel 中使用 CCSID 获取十六进制值的查询返回结果时遇到问题。如果我使用有问题的标识符并将其手动插入到我的 sql 客户端中的查询中,它会起作用:

SELECT          *
FROM            TableOne T1
WHERE           CAST(T1 . IDENITIFIER AS CHAR(26) CCSID 65535) = x'0213725502A3BC45706AEE6001';

但是,当我在我的 laravel 模型中尝试使用标识符作为参数时,它出错并显示 x:identifier 而不是 x,然后是字符串:

$sql = "SELECT          *
    FROM            TableOne T1
    WHERE           CAST(T1 . IDENITIFIER AS CHAR(26) CCSID 65535) = x':identifier'
";

    try {
        return DB::connection('odbc')->select($sql, [
            'identifier' => $identifier
        ]);
    } catch (Exception $e) {
        return false;
    }

我怎样才能让这个参数正确地注入 x 以便它像手动一样工作?

以下查询应该对您有所帮助。我们可以将 tablewhereRaw 链接起来。您不需要创建原始查询。

 return DB::connection('odbc')->table('TableOne')
                    ->whereRaw("CAST(IDENITIFIER AS CHAR(26) CCSID 65535) = x'?'",[$identifier])
                    ->get();