在 .module 文件中的静态 SQL 查询中传递参数 - Drupal 8
Passing parameters in Static SQL query in .module file - Drupal 8
在我的 Drupal 8 站点中,我有一个 'Search' 页面功能。为此,我试图将我的自定义 SQL 查询与核心 Drupal 搜索查询结合起来。我正在尝试向 .module 文件中的 SQL 查询添加参数,但它抛出了语法错误。我的查询如下:
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 查询行中收到语法错误。有帮助解决这个问题吗?
尝试在查询中使用变量:
$result = $connection->query("SELECT to_zip FROM zipmaster_xref WHERE from_zip = '".$searched_zip_value."' AND miles = '".$searched_miles_value."'")->fetchAll();
在我的 Drupal 8 站点中,我有一个 'Search' 页面功能。为此,我试图将我的自定义 SQL 查询与核心 Drupal 搜索查询结合起来。我正在尝试向 .module 文件中的 SQL 查询添加参数,但它抛出了语法错误。我的查询如下:
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 查询行中收到语法错误。有帮助解决这个问题吗?
尝试在查询中使用变量:
$result = $connection->query("SELECT to_zip FROM zipmaster_xref WHERE from_zip = '".$searched_zip_value."' AND miles = '".$searched_miles_value."'")->fetchAll();