Передача параметров в запросе Stati c SQL в файле .module - Drupal 8 - PullRequest
0 голосов
/ 27 января 2020

На моем сайте Drupal 8 у меня есть функция "Поиск" на странице. Для этого я пытаюсь объединить свой пользовательский запрос SQL с основным поисковым запросом Drupal. Я пытаюсь добавить параметры в запрос SQL в файле .module, и он вызывает синтаксическую ошибку. Мой запрос выглядит следующим образом:

function mymodule_views_query_alter(\Drupal\views\ViewExecutable $view, \Drupal\views\Plugin\views\query\QueryPluginBase $query) {
//If my view is my-search and the Miles field is not empty and not 'Any' and zipcode field is not empty

  $searched_miles_value = $view->getRequest()->get('field_miles_value');
  $searched_zip_value = $view->getRequest()->get('field_zip_value');

  if(!empty($searched_miles_value)) {
    _remove_view_query_condition($query, 'node__field_miles.field_miles_value');
  } 

  if(!empty($searched_zip_value)) {
    _remove_view_query_condition($query, 'node__field_zip.field_zip_value');
  }

  if($view->id() == 'my_search'  && 
      !empty($searched_miles_value) &&
      !empty($searched_zip_value) &&
      ($searched_miles_value != 'any')) {

        $connection = \Drupal\Core\Database\Database::getConnection();
        $result = $connection->query('SELECT to_zip FROM zipmaster_xref WHERE from_zip = [field_zip_value] AND miles = [field_miles_value]')->fetchAll();

        $target_zips = ['98567'];//hardcoded for testing
        foreach($result as $zip) {
          $target_zips[] = $zip->to_zip;
        }

        $query->addWhere('new_group', 'node__field_zip.field_zip_value', $target_zips, 'IN');
  }

Я получаю синтаксическую ошибку в строке запроса SQL. Любая помощь, чтобы обмануть это?

1 Ответ

1 голос
/ 27 января 2020

попробуйте использовать переменные в запросе:

$result = $connection->query("SELECT to_zip FROM zipmaster_xref WHERE from_zip = '".$searched_zip_value."' AND miles = '".$searched_miles_value."'")->fetchAll();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...