6

从编程上讲,有没有办法获取一个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 中,这将被认为是低效且不好的做法。有没有更好的办法?

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

4

3 回答 3

7

而是使用

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

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

于 2013-02-25T11:28:20.540 回答
6

这是一个很好的资源,可以通过不同的方式使用标准 SugarBean 与 SQL:这里

对于您的示例:

$bean = BeanFactory::getBean('Accounts');
$account_list = $bean->get_list("", "accounts.name like '%Associates%'");
于 2013-02-24T01:33:58.793 回答
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();
于 2016-04-16T12:25:41.120 回答