2011-06-29 10 views
6

Używam ORM RedBean do napisania kodu i zastanawiałem się, czy mogę załadować/pobrać tylko niektóre pola z tabeli db. Wiem, że istnieje metoda obciążenia, ale daje on całą tabelę jako komponent bean. Chciałbym dostać tylko niektóre pola?Odzyskiwanie tylko niektórych pól w RedBean

Heh, kiedy to napisałem, zacząłem się zastanawiać, czy nie jest to przeciwko wzorowi RedBean (lub ORM), ponieważ uzyskanie tylko niektórych wartości spowoduje, że nieprawidłowe (tylko z pewnymi wartościami) obiekt/komponent bean? Chciałem zrobić leniwy ładunek wartości ... może jest jakiś inny ORM (tak łatwy jak RedBean :), żeby to osiągnąć?

Odpowiedz

3

To nie ma sensu, aby załadować tylko niektóre pola z rekordu:

  • Wybierając mniejsze pola nie będzie zmniejszyć liczbę zapytań
  • To przyzwyczajenie zmniejszyć ilość danych, które muszą być przeniesione (jest to bardziej związane z liczbą wierszy)

Również RedBeanPHP już leniwy-ładuje wszystkie pola relacyjne, więc nie ma potrzeby wykonywania tej instrukcji. Jeśli jesteś zainteresowany tylko jednym użyciu komórek:

R::getCell("select title from document where id = 1"); 

Albo po prostu chwycić niektórych pól z rekordu:

R::getRow("select id,title from document where... "); 

Funkcje te zwracają rekordy, a nie fasolę, jest to najszybszy sposób, aby radzić sobie z prostymi polami i wierszami.

Mam nadzieję, że ta odpowiedź pomoże ...

+3

Przepraszam, ale muszę się nie zgodzić. Wyobraź sobie bloga. Ma 200 postów z dużą ilością tekstu we właściwości "body" każdej z nich. Jeśli chcesz wyświetlić listę wszystkich postów, łatwo możesz zabraknąć pamięci ładując własność 'body' z nich wszystkich. Ale chodzi o to, że nie potrzebujesz "ciała", aby pokazać listę. Selektywne ładowanie zapisywałoby tutaj dzień. Ale w każdym razie, kocham twoje ORM i wykonałeś naprawdę świetną robotę. Dziękuję bardzo: D –

Powiązane problemy