2013-02-24 11 views
6

Programmatisch gesprochen gibt es eine Möglichkeit, eine array oder eine Sammlung von SugarCRM-Bean-Objekten abzurufen?Sammlung von SugarCRM Beans holen

Das heißt, sagen wir, ich wollte eine Reihe von Kontozeilen holen, die das Wort Bank in ihrem Namen enthalten. Mit rohem SQL, würde ich so etwas wie diese

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

tun Gibt es eine Möglichkeit, die SugarCRM ORM zu so etwas ähnlichem? Wenn nicht, wie gehen SugarCRM-Programmierer normalerweise mit dieser Situation um? Ich weiß, ich etwas zusammen, indem Sie eine Liste von IDs aus der Datenbank

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

aber in den meisten ORM hacken könnte, die ineffizient angesehen werden würden, und schlechte Praxis. Gibt es einen besseren Weg?

(Perfekt bereit für die Antwort zu sein „Nein, es nicht Art und Weise ist, das zu tun.“ Ich bin neu auf die Plattform und versuchen, meine zurechtzufinden)

Antwort

7

eher

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

Wie get_list Ihnen geben wird, was Sie für list_max_entries_per_page definiert haben.

6

Hier ist eine großartige Ressource für verschiedene Arten verwenden Sie den Standard-SugarBean im Vergleich zu SQL: here

Für Ihr Beispiel:

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

Dies ist eine alte Frage, aber für zukünftige Leser scheinen SugarBean-Methoden get_list() und get_full_list() veraltet zu sein, und es wird empfohlen, stattdessen SugarQuery zu verwenden.

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