Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在Drupal8中创建查询_Php_Mysql_Drupal_Drupal 8 - Fatal编程技术网

Php 如何在Drupal8中创建查询

Php 如何在Drupal8中创建查询,php,mysql,drupal,drupal-8,Php,Mysql,Drupal,Drupal 8,我习惯于在drupal 7中使用db_select,但现在在drupal 8中不推荐使用它 所以,如果我需要创建一个查询来列出users\u field\u data表中的所有用户,我应该怎么做 我是否仍然使用db\u select或db\u query,即使它们是不推荐使用的函数?或者创建一个新的控制器从“选择类”扩展并进行查询?取决于您试图实现的目标 使用存储对象 如果要对用户进行简单查询,则应使用存储对象的loadByProperties 使用实体查询&loadMultiple 如果需

我习惯于在drupal 7中使用db_select,但现在在drupal 8中不推荐使用它

所以,如果我需要创建一个查询来列出
users\u field\u data
表中的所有用户,我应该怎么做


我是否仍然使用
db\u select
db\u query
,即使它们是不推荐使用的函数?或者创建一个新的控制器从“
选择类”扩展并进行查询?

取决于您试图实现的目标


使用存储对象 如果要对用户进行简单查询,则应使用存储对象的loadByProperties


使用实体查询&loadMultiple 如果需要更复杂的查询,包括排序、范围、寻呼机和/或条件组,则应使用实体查询


正如文档中提到的,您可以通过注入Drupal的数据库连接类来查询数据。例如:

use Drupal\Core\Database\Connection;

class DatabaseQueryExample {

  protected $connection;

  public function __construct(Connection $connection) {
    $this->connection = $connection;
  }

  public function queryExamples() {
    // db_query()
    $this->connection->query(" ... ");
    // db_select()
    $this->connection->select(" ... ");   
  }

}

db\u选择
db\u插入
db\u更新
,等等。。。在Drupal
8.0.x
中已弃用,将在Drupal
9.0.0
中删除

相反,从容器中将数据库连接注入到服务中,并对其调用
select()
。例如,
$injected\u database->select($table,$alias,$options)

例如:


我建议您将问题的措辞改为“如何在D8中进行查询”,因为它因基于意见而吸引选票。您想实现什么?谢谢您的评论!这很有帮助!问题:
't'
的两个实例是否都是您想要获取的行的名称?fields()接受多个参数,如果您使用->fields('t'),即仅提供1个参数,这是您定义为别名的参数,它将转换为“*”,您在编写SQL查询时将使用该参数获取所有字段。要获取一组字段,请从使用的表->字段('t',数组('a','b')中说出'a','b'
$ids = \Drupal::entityQuery('user')->condition('name', 'foo')->execute();
$users = User::loadMultiple($ids);
use Drupal\Core\Database\Connection;

class DatabaseQueryExample {

  protected $connection;

  public function __construct(Connection $connection) {
    $this->connection = $connection;
  }

  public function queryExamples() {
    // db_query()
    $this->connection->query(" ... ");
    // db_select()
    $this->connection->select(" ... ");   
  }

}
$db = \Drupal::database();

$data = $db->select('table_name','t')->fields('t')->execute();

$db->insert();

$db->update();