Điểm:0

Truy vấn thực thể, loại trừ các nút KHÔNG VÀO khỏi trường tham chiếu thực thể đa giá trị

lá cờ cn

Drupal phiên bản 9.3.8 Gần đây tôi đã sử dụng lệnh entityQuery và đối với các truy vấn đơn giản hơn, tôi không gặp vấn đề gì. Bây giờ tôi cần lọc, cũng như các toán tử '=' và 'IN', cũng như các nút có trường đa giá trị không có giá trị ââhoặc không có giá trị nhất định. Đọc tài liệu tôi đã sử dụng toán tử 'KHÔNG VÀO' nhưng cho kết quả kém. Ví dụ truy vấn sẽ trả lại cho tôi các nút không có giá trị 161 và 163 Đây là truy vấn tôi đã đơn giản hóa để thử toán tử 'NOT IN'

$nids = \Drupal::entityTypeManager()->getStorage('node')->getQuery()
->điều kiện('loại' , 'cử chỉ' )
->notExists('field_attivita')
->điều kiện( 'field_attivita', ['161', '163'], 'NOT IN' )
->thực thi();

Tôi cũng đã thử với toán tử '<>' nhưng không được gì

Trong số các bài báo và câu hỏi khác nhau, tôi cũng đã đọc bài đăng gần với yêu cầu của tôi Cách sử dụng entityQuery để chọn nếu trường tham chiếu thực thể nhiều giá trị không chứa id nhưng tôi không thể hiểu tại sao nó không hoạt động

leymannx avatar
lá cờ ne
Cái gì đây không phải là Tồn tại? Điều gì xảy ra với . target_id như được hiển thị trong các câu trả lời được liên kết?
sonfd avatar
lá cờ in
Tôi không chắc, nhưng tôi không nghĩ bạn có thể làm điều này trong một truy vấn duy nhất. Tôi nghĩ bạn có thể cần 1. truy vấn tất cả, 2. truy vấn các mục có id bạn không muốn, sau đó xóa id khỏi truy vấn 2 khỏi tập kết quả của truy vấn 1. Nhân tiện, về cơ bản, đó là gì câu trả lời được liên kết đang nói.
sonfd avatar
lá cờ in
Tôi nghĩ vấn đề ở đây là cách các giá trị tham chiếu thực thể được lưu trữ - mỗi giá trị trong trường đa giá trị có hàng riêng trong bảng db. Nếu trường của bạn có cardinality = 1, bạn có thể sử dụng not equals cho từng giá trị mà bạn muốn loại trừ.
lá cờ cn
sonfd, cảm ơn vì đã trả lời và giải thích.Như đã đề cập, gần đây tôi đã tiếp cận các truy vấn (xin lỗi tiếng Anh sơ cấp của tôi cũng sẽ vì lý do này mà tôi sẽ không rõ ràng) Tôi đã làm một số bài kiểm tra dựa trên gợi ý của bạn và có lẽ tôi đã hiểu những gì bạn nói với tôi. Nhưng có một điều tôi không hiểu. Tôi đã viết một số dữ liệu cho một ví dụ vị trí. Lĩnh_vực | $ biến 1 300 | 161 2 161 | 163 3 400 | 4 163 | 5 chỗ trống | 6 200 | 7 163 | 8 trống | ...
lá cờ cn
nếu tôi sử dụng điều kiện -> điều kiện ('trường_hoạt_động_xung_đồng', [161, 163], 'IN') nó đưa tôi trở lại các nút ở vị trí 2 - 4 và 7 của ví dụ -> điều kiện ('trường_hoạt_động_xung_đồng', [161, 163], 'KHÔNG VÀO') chỉ nên hủy các nút không chứa 161 và 163 Mặt khác, tôi không hiểu toán tử 'NOT IN' làm gì trong sách hướng dẫn SQL xác nhận điều đó Tôi bối rối khi thực hiện 2 truy vấn và sau đó là sự khác biệt giữa các mảng, truy vấn phức tạp và nhiều dữ liệu có thể làm chậm quá trình xử lý
lá cờ cn
leymannx, cảm ơn vì đã trả lời nhưng tôi không hiểu. notExist cho biết trường đa giá trị không có dữ liệu hay không. target_id là nid của nút

Đă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.