获取SugarCRM豆的收集

时间:2013-02-24 00:52:45

标签: php sugarcrm

从编程上讲,有没有办法获取array或SugarCRM bean对象的集合?

也就是说,我想说我想在其名称中提取包含单词Bank的多个帐户行。使用原始SQL,我会做这样的事情

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

有没有办法使用SugarCRM ORM来做类似的事情?如果没有,SugarCRM程序员通常如何处理这种情况?我意识到我可以通过从数据库中选择ID列表来一起破解某些东西

$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中,这被认为是低效的,而且是不好的做法。还有更好的方法吗?

(完全准备好答案是“不,没有办法做到这一点。”我是平台的新手并试图找到我的方位)

3 个答案:

答案 0 :(得分:7)

而是使用

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

由于get_list将为您提供您为list_max_entries_per_page定义的内容。

答案 1 :(得分:6)

以下是使用标准SugarBean与SQL的不同方法的绝佳资源:here

对于你的例子:

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

答案 2 :(得分: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();