我有一个查询,要求使用DB::raw()
进行联接。它加入了JSON_TABLE()
,因此与人们通常所做的有所不同。我已经可以正常工作了,但是绑定参数时似乎无法正常工作。
代码如下:
if(!isset($request->search['merchantId']) && isset($request->search['uuid']['division'])) {
$query->join(DB::raw('JSON_TABLE(
\'[{"division":"'.$request->search['uuid']['division'].'"}]\',
\'$[*]\' COLUMNS (
division VARCHAR(32) PATH \'$.division\'
)
) jt1'), 'jt1.division', 'entitiesConsolidation.division');
}
答案 0 :(得分:0)
您可以通过[ key => value]
或setBindings
方法使用laravel绑定
$query->join(DB::raw('JSON_TABLE(
\'[{"division":":division"}]\',
\'$[*]\' COLUMNS (
division VARCHAR(32) PATH \'$.division\'
)
) jt1', ['division' => $request->search['uuid']['division']]), 'jt1.division', 'entitiesConsolidation.division');
答案 1 :(得分:0)
使用json_array()
和json_object()
构建JSON值,并使用addBinding()
:
if(!isset($request->search['merchantId']) && isset($request->search['uuid']['division'])) {
$query->join(DB::raw('JSON_TABLE(
json_array(json_object(\'division\', ?)),
\'$[*]\' COLUMNS (
division VARCHAR(32) PATH \'$.division\'
)
) jt1'), 'jt1.division', 'entitiesConsolidation.division');
$query->addBinding($request->search['uuid']['division'], 'join');
}