Puncte:0

Optimizați preluarea datelor de la obiectele entitate

drapel cn

În prezent, folosim EntityTypeManager fie pentru a încărca, fie pentru a încărca Multiple:

$this->entityTypeManager->getStorage('node')->loadMultiple($nids);
$this->entityTypeManager->getStorage('node')->load($nid);

Acest lucru creează și returnează obiecte de noduri care cred că folosesc multe resurse de pe server (deoarece preia toate câmpurile). De asemenea, încercăm să obținem aproximativ 500 de noduri și fiecare are peste 80 de câmpuri. Vrem doar să preluăm anumite câmpuri.

Știe cineva o modalitate de a interoga și de a prelua doar anumite câmpuri necesare?

misterdidi avatar
drapel de
M-aș baza pe API-ul bazei de date pentru a face o interogare personalizată care va prelua numai anumite câmpuri de care aveți nevoie. Vezi răspunsul lui Philipp Zedler în postarea menționată de @leymannx .
Puncte:2
drapel pt

Puteți utiliza o interogare personalizată pentru a fi mai eficient, iată un exemplu:

$conexiune = \Drupal::service('baza de date');
$select = $conexiune->select('node_field_data', 'n');
$select->fields('n', ['nid', 'type', 'title']);
$select->condition('n.status', 1, '=');
$select->condition('n.type', ['pagina', 'articol'], 'IN');
$select->leftJoin('node__body', 'body', 'body.entity_id = n.nid');
$select->fields('body', ['body_value', 'body_summary']);
$rezultat = $select->execute()->fetchAll(); 
// printeaza $result[0]->body_value; 

Trebuie să vă alăturați tabelului pentru fiecare câmp pe care trebuie să îl obțineți. Rețineți că $rezultat nu contine hidratat Nodul obiecte dar stdClass; aceasta ar putea funcționa cu toate tipurile de entități de bază de date (de ex Utilizator sau orice altceva).

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.