2013-02-24 5 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

ここでは、へのさまざまな方法のための素晴らしいリソースですSQL対標準SugarBeanを使用する:あなたたとえば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(); 
関連する問題