Puncte:1

Cum să interogăm ultima deltă?

drapel ai

The documentație pentru QueryInterface::condiție explică cum să restrângi o condiție la o anumită deltă a câmpului interogat. Există o modalitate de a spune interfeței să se uite la valoarea ultimei delte a câmpului? Am încercat să ofer -1 pentru delta, deoarece această metodă este folosită de multe limbaje de programare pentru accesul la elementele matricei numărând de la sfârșit, dar asta a dus doar la seturi de rezultate goale. Va trebui să recurg fie la alcătuirea unui câmp inactiv pentru a stoca ultima valoare pentru câmp separat și să scriu un cod suplimentar pentru a mă asigura că acel câmp este întotdeauna populat/actualizat, fie să renunț la interfața de interogare a entității și să folosesc SQL direct in schimb?

drapel ru
Puteți încerca să sortați descendent și să limitați rezultatul la 1
drapel ai
@Hudri Știu despre aplicarea unui sort la rezultatele din interogarea completă. Și știu despre limitarea acestor rezultate (din nou, pentru interogarea completă). Puteți explica cum să aplicați aceste tehnici la condiții individuale _din_ interogarea entității?
drapel ru
Uhm, bună întrebare, m-ai prins. Sortarea și limitarea vor funcționa cu [Database API](https://www.drupal.org/docs/8/api/database-api/dynamic-queries/introduction-to-dynamic-queries), dar nu direct cu EntityQuery. Dar a existat o întrebare oarecum similară acum câteva zile, [puteți adăuga o „etichetă” la o interogare de entitate](https://drupal.stackexchange.com/questions/307285/what-method-should-i-use- instead-of-drupal-core-entity-query-sql-queryaddexpre) și utilizați acea etichetă pentru a adăuga expresii API de bază de date la o EntityQuery.
drapel ai
Mulțumesc, @Hudri. Nu am nicio îndoială că ar funcționa. Am impresia, totuși, că drupaliștii se încruntă să folosească SQL direct pe tabelele bazei de date subiacente pentru entități, pe motiv că nu există nicio garanție documentată că convențiile de denumire a tabelelor/coloanelor nu se vor schimba niciodată, făcând această abordare fragilă. Înclin să cred că, dacă voi ignora acel sfat, aș putea la fel de bine să folosesc API-ul bazei de date pentru întreaga interogare. Pot face asta în somn și aș obține mult mai multă flexibilitate și eficiență. Pentru un ban, pentru o liră, nu?
drapel ru
Ei bine, la fel cum API-ul bazei de date EntityQuery se ocupă de prefixele de nume de tabel, iar AFAIK acesta este singurul lucru permis să se schimbe între instalări sau medii. Orice altceva ar fi o schimbare radicală care necesită mai întâi o notificare de depreciere și, în sfârșit, o creștere a numărului de versiune majoră. Acesta este scopul versiunii semantice. Și dacă această schimbare puțin probabilă se va întâmpla vreodată, cel mai probabil va frâna ambele, EntityQuery și API-ul de bază de date.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.