将 SQL 查询转换为 Drupal 7 PHP 规则
Convert SQL query into Drupal 7 PHP rules
SELECT address
FROM user_address
WHERE username = '$user->name'
ORDER BY time DESC
LIMIT 1
这是我能理解的SQL查询。如何将其转换为 Drupal 的 7 PHP?我想弄明白一天,我尝试了不同的方法,但似乎我在这方面做得不好。
为此我们使用 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 以满足您的需要
试试这个:
$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
:
$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);
SELECT address
FROM user_address
WHERE username = '$user->name'
ORDER BY time DESC
LIMIT 1
这是我能理解的SQL查询。如何将其转换为 Drupal 的 7 PHP?我想弄明白一天,我尝试了不同的方法,但似乎我在这方面做得不好。
为此我们使用 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 以满足您的需要
试试这个:
$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
:
$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);