Điểm:0

Nhận đường dẫn (bí danh) từ truy vấn SQL

lá cờ in

Tôi có một truy vấn SQL để nhận tất cả các nút có ID, tiêu đề, ngày xuất bản, ngày thay đổi, v.v.

Ngoài ra, tôi cần nhận đường dẫn đến từng người trong số họ (có thể từ path_alias.alias).

Bây giờ tôi đã theo dõi (không có bí danh):

CHỌN TỐI THIỂU(node_field_data.nid) AS nid,node_field_data.type,node_field_data.status,node_field_data.title,node_field_data.langcode AS node_field_data_langcode,node_field_data.created,node_field_data.changed
TỪ
node_field_data
Nút INNER THAM GIA BẬT node_field_data.nid = node.nid
NHÓM THEO node.nid, node_field_data.changed, node_field_data_langcode
ĐẶT HÀNG THEO node_field_data.nid DESC;

Bất kỳ ý tưởng làm thế nào để có được nó?

lá cờ cn
Là một cách nhanh chóng và bẩn thỉu để nhận truy vấn, bạn có thể tạo chế độ xem thực hiện những gì bạn muốn và sau đó bật "hiển thị truy vấn SQL" trong tùy chọn quản trị Chế độ xem.
lá cờ in
vâng, đó là những gì tôi đã làm, nhưng mở rộng truy vấn này một chút vì tôi cần lưu kết quả trong CSV... Chế độ xem đưa ra một truy vấn hơi khác so với yêu cầu của tôi
Điểm:2
lá cờ in

Nếu bạn muốn truy cập các thực thể Drupal, thì bạn nên sử dụng EntityTypeManager's getStorage() phương thức trả về bộ điều khiển lưu trữ cho các nút:

// Lấy tham chiếu trình xử lý lưu trữ cho Nodes.
$node_storage = \Drupal::entityTypeManager()->getStorage("node");
// Tải một nút tùy ý, được xác định bởi biến $nid.
$node = $node_storage->load($nid);

Vì một nút là một loại thực thể nội dung, nên bạn sẽ có toàn bộ API như được xác định bởi Drupal\node\NodeInterface, để làm việc với. Điều này bao gồm khả năng gọi:

// Nhận đường dẫn nội bộ, bí danh đường dẫn nếu tồn tại, cho một thực thể.
$node->toUrl()->toString();

Để biết thêm thông tin chi tiết về cách làm việc với các Thực thể trong Drupal, vui lòng xem bài đăng này, từ đó tôi đã mượn ví dụ trên: https://www.drupal.org/docs/drupal-apis/entity-api/working-with-the-entity-api

lá cờ in
Tôi không cần điều đó, truy vấn này sẽ hoạt động bên ngoài Drupal, như bạn thấy đó là truy vấn SQL trực tiếp
lá cờ in
Tôi hiểu hoàn toàn. :) Hóa ra, cách tốt nhất là sử dụng lớp thực thể để quản lý, truy vấn và chỉnh sửa các thực thể trong Drupal.Khi bỏ qua các hệ thống phụ được chỉ định, bạn sẽ chiến đấu trong một trận chiến khó khăn, trong đó bạn có thể sẽ cần tải các thực thể Node để đạt được những gì bạn đang yêu cầu. Ngoài ra, những thứ như giá trị thuộc tính nội bộ và tên bảng không được coi là đảm bảo và có thể thay đổi bất ngờ. API được đảm bảo; việc thực hiện là không.
apaderno avatar
lá cờ us
Trên Drupal 8, các bí danh đường dẫn hiện cũng là các thực thể. Ngay cả khi các nút và bí danh đường dẫn không phải là thực thể, sẽ luôn tốt hơn nếu sử dụng API hiện có thay vì truy vấn trực tiếp cơ sở dữ liệu Drupal. Drupal cũng có thể hiển thị API REST, điều này cho phép truy vấn các thực thể mà không cần biết bất kỳ chi tiết nào về bảng cơ sở dữ liệu nào được sử dụng cho mục đích nào hoặc các bảng đó chứa trường nào.
apaderno avatar
lá cờ us
Có, tôi muốn chạy mã PHP để thực hiện tác vụ đó hơn là truy vấn cơ sở dữ liệu từ thiết bị đầu cuối MySQL. Điều này yêu cầu khởi động Drupal, nếu mã PHP không dành cho mô-đun Drupal mà là tập lệnh bên ngoài truy cập dữ liệu Drupal. (Nó nằm ngoài quan điểm của Drupal.) Ngoài ra, tôi sẽ sử dụng các triển khai API REST của Drupal nếu thông tin cần thiết trong mã không được viết bằng PHP.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.