Fetching Collection of SugarCRM Beans

Alan Storm picture Alan Storm · Feb 24, 2013 · Viewed 10.2k times · Source

Programmatically speaking, is there a way to fetch an array or collection of SugarCRM bean objects?

That is, let's say I wanted to fetch a number of account rows that included the word Bank in their name. With raw SQL, I'd do something like this

SELECT * 
FROM Accounts 
WHERE name LIKE '%Associates%`;

Is there a way using the SugarCRM ORM to so something similar? If not, how do SugarCRM programmers typically handle this situation? I realize I could hack something together by selecting a list of IDs from the database

$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']);
}

but in most ORM's that would be considered inefficient, and bad practice. Is there a better way?

(Perfectly ready for the answer to be "No, there's not way to do that". I'm new to the platform and trying to get my bearings)

Answer

davidboris picture davidboris · Feb 25, 2013

Rather use

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

As get_list will give you what you have defined for list_max_entries_per_page.