5

Có vẻ như có một vài cách khác nhau để tham gia hai bảng bằng cách sử dụng khung công tác Zend, nhưng tôi chưa bao giờ thực hiện nó trước đây vì vậy tôi không biết đó là cách tốt nhất để làm điều đó.Cách tốt nhất để thực hiện Tham gia bên trong bằng khung công tác Zend?

Đây là những gì tôi đang cố gắng để làm ...

Tôi có 3 bảng trong cơ sở dữ liệu của tôi:

users 
    (id , name) 
groups 
    (id , name) 
group_members 
    (id , group_id , user_id) 

Tôi đang cố gắng để tìm kiếm các nhóm mà người dùng thuộc về và hiển thị cho người dùng. Câu lệnh SQL này thực hiện khá nhiều công việc (mặc dù có thể có cách tốt hơn để viết nó). Nó chỉ trả về các cột mà tôi quan tâm là id và tiêu đề của nhóm.

SELECT groups.id, groups.title 
    FROM group_members 
     INNER JOIN groups 
     ON groups.id = group_members.group_id 
    WHERE user_id = $userId 

Tôi có thể làm điều này với Khung công tác Zend như thế nào?

Trả lời

9

Cuối cùng đã tìm ra cách thực hiện. Nếu bạn đã có một cách tốt hơn, xin vui lòng cho tôi biết.

$db = Zend_Db_Table::getDefaultAdapter(); //set in my config file 
$select = new Zend_Db_Select($db); 
$select->from('groups', array('id', 'title')) //the array specifies which columns I want returned in my result set 
    ->joinInner(
     'group_members', 
     'groups.id = group_members.group_id', 
     array()) //by specifying an empty array, I am saying that I don't care about the columns from this table 
    ->where('user_id = ?', $userId); 
$resultSet = $db->fetchAll($select); 

Điều này sẽ trả lại bảng chỉ có id và cột tiêu đề. Số trống array() là chìa khóa để xóa các cột mà tôi không quan tâm. Sau đó tôi có thể làm điều gì đó với tập hợp kết quả.

foreach ($resultSet as $row) { 
    //do something with $row->id or $row->title 
} 
0

Không cần sử dụng Tham gia, chúng tôi có thể sử dụng Zend_Db_Table thay vì lý do về mẫu MVC. Tôi đã nhận được mẫu ý tưởng này here, # 10 của Filip. (Có thể họ gọi đây là "Cổng dữ liệu bảng"?)

+1

Trong khi liên kết này có thể trả lời câu hỏi, tốt hơn nên bao gồm các phần quan trọng của câu trả lời ở đây và cung cấp để tham khảo. Câu trả lời chỉ liên kết có thể trở thành không hợp lệ nếu trang được liên kết thay đổi. – ekad

Các vấn đề liên quan