Конвертировать SQL-запрос в PHP-правила Drupal 7
SELECT address
FROM user_address
WHERE username = '$user->name'
ORDER BY time DESC
LIMIT 1
Вот SQL-запрос, который я могу понять. Как можно конвертировать его в Drupal 7 PHP? Я пытаюсь понять это в течение дня, и я пробовал разные подходы, но мне кажется, что я просто плох в этом.
4 ответа
Ты можешь использовать db_select
:
$results = db_select('user_address', 'ua')
->fields('ua', array('address'))
->condition('ua.username', $user->name, '=')
->orderBy('ua.time', 'DESC')
->range(0,1)
->execute()
->fetchAll();
var_dump($results);
В противном случае вы можете использовать db_query
если вы хотите написать весь SQL:
$results = db_query("SELECT address
FROM user_address
WHERE username = :username
ORDER BY time DESC
LIMIT 1 ", array(':username' => $user->name))->fetchAll();
var_dump($results);
Наконец вы можете использовать db_query_range
:
$page = 0;
$limit = 1
$results = db_query_range("SELECT address
FROM user_address
WHERE username = :username
ORDER BY time DESC",
$page * $limit,
$limit,
array(':username' => $user->name))
->fetchAll();
var_dump($results);
Попробуй это:
$result = db_select('user_address', 'ua')
->fields('ua', array('address'))
->condition('ua.username', $user->name)
->execute()
->fetchAll();
$result = $result = db_select('usr_address','u')
->fields('u',array('address','uid'))
->range(0,1)
->orderby('time', 'DESC')
->condition('u.uid',$uid,'=')
->execute();
вот как это на самом деле работает. Спасибо за ваши предложения, но в конце я сделал это. Сам. Ну вроде;D
Для этого мы используем db_select() или db_query() - первый предпочтительнее.
$query = db_select('user_address', 'u');
// Add condition and fields
$query->condition('u.username', ‘james’)
$query->fields('u’ array('u.address'));
// выполнить это
$result = $query->execute();
foreach ($result as $record) {
// Do something with each $record
}
Для получения дополнительной информации см. https://www.drupal.org/docs/7/api/database-api/dynamic-queries/introduction-to-dynamic-queries.
обновление: см. часть условия. Кроме того, вы можете поместить это в исполняемую область модуля или php вашего сайта или через командную строку drush. Измените имя пользователя James в соответствии с вашими потребностями