Trước hết, tôi sẽ tránh càng nhiều càng tốt việc cập nhật cơ sở dữ liệu trực tiếp cho các thực thể. Mô hình thực thể của Drupal 8+ được liên kết chặt chẽ với các lớp trừu tượng của nó, được triển khai dưới dạng móc nối. Phương pháp hay nhất được coi là luôn sửa đổi các thực thể thông qua API thực thể. Điều này sẽ cho phép Drupal giữ mọi thứ đồng bộ.
Bây giờ, câu trả lời ngắn gọn cho câu hỏi của bạn là việc xóa bộ nhớ cache trên trang web của bạn có thể sẽ dẫn đến các giá trị mới được hiển thị.
Câu trả lời tốt hơn là viết một số PHP để lặp qua tất cả các nút và cập nhật ngày tạo nội dung của chúng thông qua API thực thể. Tôi thường sử dụng Drush để thực hiện các loại thao tác này. Dưới đây là một ví dụ phù hợp với nhu cầu của bạn, dựa trên giả định sau:
- Bạn đã tải các giá trị nút: ngày của mình vào một mảng có tên
$new_node_dates
, trong đó các khóa là NID và các giá trị là Dấu thời gian Unix đại diện cho ngày tạo mới. Xem tại đây để biết ví dụ về đọc tệp CSV thành một mảng. Nếu ngày không ở định dạng dấu thời gian Unix, bạn có thể sử dụng strtotime() để chuyển đổi chúng.
Câu lệnh Drush sau đó sẽ là:
drush eval '$node_storage = \Drupal::entityTypeManager()->getStorage("node"); foreach($new_node_dates as $nid => $creation_date) { $node = $node_storage->load($nid); $node->created = $creation_date; $node->save(); }'
May mắn nhất!