MySQL для Drupal 7 db_select

Я пытаюсь выполнить следующий запрос mysql ниже с drupal 7 db_select. Но я не могу понять, как это можно сделать. Кто-нибудь может помочь мне перевести следующий запрос mysql в динамический запрос БД drupal 7?

Моя главная цель - на самом деле отсортировать результат mysql по заданной позиции строки в имени. Пожалуйста, имейте в виду, что я не хочу получать все результаты и сортировать их с помощью php, вместо этого я хочу использовать mysql для этого. Как я знаю, команда "ORDER BY LOCATE" делает это точно.

SELECT name FROM `taxonomy_term_data` WHERE LOCATE('credit', name) > 0 ORDER BY LOCATE('credit', name)

1 ответ

1. Правильный пример db_select

Это возможно, используя drupal 7 db_select, вот мой пример рабочего кода (сделано с помощью этого поста)

Мой пример в с таблицей cities содержащий столбец city, Найти города с двойным "о" и отсортировать по их позиции:

$r = db_select('cities', 't')
  ->fields('t')
  ->condition('t.city', '%' . db_like('oo') . '%', 'LIKE');
$r->addExpression("LOCATE('oo', city) ", 'loc');
$r = $r->orderBy('loc', 'DESC')
  ->execute()
  ->fetchAllAssoc("id");

Так похоже в вашем примере будет:

$r = db_select('taxonomy_term_data', 't')
  ->fields('t')
  ->condition('t.name', '%' . db_like('credit') . '%', 'LIKE');
$r->addExpression("LOCATE('credit', name) ", 'loc');
$r = $r->orderBy('loc', 'DESC'); //Or ASC
//Execute your query and gather result anyway you want.

2. Вам нужно использовать db_select?

Как кто-то заявил в комментарии в ссылке, я написал: "Есть время и места, чтобы просто использовать db_query".

Я думаю, что это время:) Не переусердствуйте в своем коде, просто используя логику drupal-way, которая часто устарела или слишком проста для сложных задач.

Я думаю, вы должны попробовать что-то вроде этого. db_like Функция, кажется, делает то, что вы ищете.

$result = db_select('taxonomy_term_data', 'ttd')
  ->fields('ttd', 'name')
  ->condition('ttd.name, '%' . db_like('credit') . '%', 'LIKE')
  ->orderBy('ttd.name', 'DESC')
  ->execute();
Другие вопросы по тегам