2013-02-24 10 views
6

Czy jest jakiś sposób na pobranie array lub kolekcji obiektów bean SugarCRM?Pobieranie kolekcji SugarCRM Beans

To znaczy, powiedzmy, że chciałem pobrać kilka rzędów kont, które zawierały słowo Bank w ich nazwie. Z surowym SQL, zrobiłbym coś w tym stylu. Czy istnieje sposób użycia ORM SugarCRM do czegoś podobnego? Jeśli nie, to jak programiści SugarCRM zwykle radzą sobie z tą sytuacją? Zdaję sobie sprawę, mogłem siekać coś razem wybierając listę identyfikatorów z bazy

$db   = DBManagerFactory::getInstance();   
$result  = $db->query('SELECT id FROM Accounts where name LIKE "%Banking%"'); 
$accounts = array(); 
while($row = $db->fetchRow($result)) 
{    
    $accounts[] = BeanFactory::getBean('Accounts', $row['id']); 
} 

ale w większości ORM-tych, które byłyby uznawane za nieefektywne i złe praktyki. Czy istnieje lepszy sposób?

(Perfekcyjnie przygotowany na odpowiedź będzie: „Nie, nie ma sposobu, aby to zrobić”. Jestem nowy na platformie i próbuje dostać moje łożyska)

Odpowiedz

7

raczej używać

$bean = BeanFactory::getBean('Accounts'); 
$account_list = $bean->get_full_list("", "accounts.name like '%Associates%'"); 

Jako get_list poda ci to, co zdefiniowałeś dla list_max_entries_per_page.

6

Tutaj jest doskonałym źródłem informacji dla różnych sposobów na używać standardowego SugarBean kontra SQL: here

Dla Twojej przykład:

$bean = BeanFactory::getBean('Accounts'); 
$account_list = $bean->get_list("", "accounts.name like '%Associates%'"); 
3

To jest stare pytanie, ale dla przyszłych czytelników, metody SugarBean get_list() i get_full_list() wydają się być przestarzałe i zaleca się używanie zamiast nich SugarQuery.

$bean = BeanFactory::getBean('Accounts'); 
$query = new SugarQuery(); 
$query->from($bean, array('team_security' => false)); 
$query->where()->contains('name', 'Associates'); 
$account_list = $query->execute();