2013-02-24 34 views
6

Nói theo lập trình, có cách nào để tìm nạp array hoặc bộ sưu tập các đối tượng bean SugarCRM không?Lấy bộ sưu tập của Hạt SugarCRM

Tức là, giả sử tôi muốn tìm nạp một số hàng tài khoản có từ Bank trong tên của chúng. Với SQL thô, tôi sẽ làm điều gì đó như thế này

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

Có cách nào sử dụng ORM của SugarCRM để tương tự như vậy không? Nếu không, các lập trình viên SugarCRM thường xử lý tình huống này như thế nào? Tôi nhận ra rằng tôi có thể hack thứ gì đó lại với nhau bằng cách chọn danh sách ID từ cơ sở dữ liệu

$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']); 
} 

nhưng trong hầu hết ORM được coi là không hiệu quả và kém. Có cách nào tốt hơn?

(hoàn hảo sẵn sàng cho câu trả lời là "Không, đó không phải là cách để làm điều đó". Tôi mới vào nền tảng này và cố gắng để có được vòng bi của tôi)

Trả lời

7

Thay sử dụng

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

Khi get_list sẽ cung cấp cho bạn những gì bạn đã xác định cho list_max_entries_per_page.

6

Dưới đây là một nguồn lực lớn cho cách khác nhau để sử dụng SugarBean tiêu chuẩn so với SQL: here

Ví dụ của bạn:

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

Đây là câu hỏi cũ nhưng đối với người đọc trong tương lai, phương pháp SugarBean get_list()get_full_list() dường như không được dùng nữa và thay vào đó, nên sử dụng SugarQuery.

$bean = BeanFactory::getBean('Accounts'); 
$query = new SugarQuery(); 
$query->from($bean, array('team_security' => false)); 
$query->where()->contains('name', 'Associates'); 
$account_list = $query->execute(); 
Các vấn đề liên quan