2013-02-24 38 views
6

從程序上講,有沒有辦法獲取array或SugarCRM bean對象集合?獲取SugarCRM Bean對象集合

也就是說,假設我想獲取一些包含單詞Bank的帳號行。與原始的SQL,我會做這樣的事情

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

是否有使用SugarCRM的ORM如此類似的方法嗎?如果不是,SugarCRM程序員通常如何處理這種情況?我知道我可以從數據庫中

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

但將被視爲效率低下的最ORM的,和壞的做法選擇ID列表一起砍東西。有沒有更好的辦法?

(完美準備的答案是「沒有,有沒有辦法做到這一點。」我是新來的平臺,並試圖讓我的軸承)

回答

7

而是使用

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

由於get_list會爲您提供list_max_entries_per_page定義的內容。

6

這裏是不同的方式一個很好的資源使用標準SugarBean與SQL:here

對於示例:

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

這是一個古老的問題,但對於未來的讀者,SugarBean方法get_list()get_full_list()似乎不推薦使用,建議使用SugarQuery代替。

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