从编程上讲,有没有办法获取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中,这被认为是低效的,而且是不好的做法。还有更好的方法吗?
(完全准备好答案是“不,没有办法做到这一点。”我是平台的新手并试图找到我的方位)
答案 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();