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()とメソッドは非推奨のようであり、代わりにSugarQueryget_full_list()を使用することをお勧めします。

$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 に答える