Drupal9 增删改查笔记
Node Create
$node = Node::create([
'type' => 'pdf_to_img',
]);
$node->title->value=30;
$node->field_sort_order->value=30;
$node->save();
单条查询
$database = \Drupal::database();
$query = $database->select('users_field_data', 'u');
$query->fields('u', ['uid', 'name', 'status', 'created', 'access']);
$result=$query->execute()->fetch();
多条数据查询
$database = \Drupal::database();
$query = $database->select('users_field_data', 'u');
$query->fields('u', ['uid', 'name', 'status', 'created', 'access']);
$query->range(0, 50);
$list=$query->execute()->fetchAll();
插入
$result = \Drupal::database()->insert('mytable')->fields([])->execute();
修改
$rea=$connection->update('mytable')->fields([])->condition()->execute();
删除
$res = $connection->delete('mytable')->condition('myfield', 5)->execute();
数据回滚
$transaction = $connection->startTransaction();
try {
}catch (Exception $e) {
$transaction->rollBack();
}
$transaction->commit();
给定以下示例WHERE子句:
WHERE ( a = 1 OR b = 1) AND ( (c = 1 AND d = 1) OR (e = 1) )
查询条件可以用条件组编写为:
$orGroup1 = $query->orConditionGroup()
->condition('a', 1)
->condition('b', 1);
$andGroup1 = $query->andConditionGroup()
->condition('c', 1)
->condition('d', 1);
$orGroup2 = $query->orConditionGroup()
->condition($andGroup1)
->condition('e', 1);
$query->condition($orGroup1);$query->condition($orGroup2);
计数查询
$query->countQuery()->execute()->fetchField();
$database = \Drupal::database();
$query = $database->select('user', 'p');
//总条数
$total=$query->countQuery()->execute()->fetchField();;
// 每页数量
$num_per_page =50;
$pager = $query->orderBy('p.create_time','desc')->extend('Drupal\Core\Database\Query\PagerSelectExtender')->limit($num_per_page);
$list = $pager->execute()->fetchAll();
$pager = \Drupal::service('pager.manager')->createPager($total, $num_per_page);
//获取当前页码
$page = $pager->getCurrentPage();
$pager = \Drupal::service('pager.manager')->createPager(50, 2);
//获取当前页码
$page = $pager->getCurrentPage();
$offset = $num_per_page * $page;
$render = [];
$render[] = [
'#theme' => 'prize_export',
'#data' => $list,
];
// Finally, add the pager to the render array, and return.
$render[] = ['#type' => 'pager'];
return $render;