Laravel - привязка параметров при использовании DB :: raw () в соединении - PullRequest
0 голосов
/ 02 мая 2019

У меня есть запрос, который требует объединения с использованием 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');
}

Ответы [ 2 ]

0 голосов
/ 03 мая 2019

Создайте значение JSON с помощью json_array() & json_object() и используйте 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');
}
0 голосов
/ 02 мая 2019

Вы используете привязку laravel [ key => value] или setBindings методом

$query->join(DB::raw('JSON_TABLE(
                  \'[{"division":":division"}]\',
                  \'$[*]\' COLUMNS (
                          division VARCHAR(32) PATH \'$.division\'
                      )
                  ) jt1', ['division' => $request->search['uuid']['division']]), 'jt1.division', 'entitiesConsolidation.division');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...