Drupal 7-db_select:where条件下的SQL函数
我需要在select语句中使用此条件:Drupal 7-db_select:where条件下的SQL函数,sql,drupal,drupal-7,Sql,Drupal,Drupal 7,我需要在select语句中使用此条件: WHERE YEAR(date) = YEAR(CURDATE()) 但如果我这样做了,就像这样: $query = db_select('table', 't'); $query->fields('t'); $query->condition('YEAR\(date\)', 'YEAR(CURDATE())', '='); Drupal不会拥有它(即使我没有转义这些括号-它只是忽略它们),因为我得到了一个错误: Column not f
WHERE YEAR(date) = YEAR(CURDATE())
但如果我这样做了,就像这样:
$query = db_select('table', 't');
$query->fields('t');
$query->condition('YEAR\(date\)', 'YEAR(CURDATE())', '=');
Drupal不会拥有它(即使我没有转义这些括号-它只是忽略它们),因为我得到了一个错误:
Column not found: 1054 Unknown column 'YEARdate' in 'where clause':
如何克服这个错误 嗯。。就这样,似乎:
$query->where('YEAR(date) = YEAR(CURDATE())');
其中
允许使用任意SQL:
where()方法允许添加任意SQL作为条件片段$代码段可以包含任何合法的SQL片段,如果它有可变内容,则必须使用命名占位符添加它。$args数组是占位符和值的数组,这些占位符和值将被替换到代码段中。由开发人员来确保代码段是有效的SQL。未对代码段进行特定于数据库的修改
嗯,您还可以使用,它允许您“在没有Drupal的情况下”编写SQL查询。
我的意思是,您可以添加自定义WHERE语句或任何SQL适当的函数,如自定义函数;)
例如
$result=db_query('从{node}中选择标题,其中type=“%s”和类似于“%%%s%%%”、'type'、'title'的标题);
使用addExpression
方法:
使用addExpression,请参阅我的帖子
$query = db_select('table', 't');
$query->fields('t');
$query->addExpression('YEAR(t.date) = YEAR(CURDATE())');
$result = $query->execute()->fetchAll();
var_dump($result);