Joins được sử dụng tốt nhất trong Yii bằng cách tạo Quan hệ, theo cách đó bạn sẽ không cần phải viết các truy vấn phức tạp
Bắt đầu bằng cách thêm các khóa ngoại vào các bảng sql của bạn (ví dụ:thêm một khóa ngoại ngữ BNId trên ghế)
Tiếp theo, nếu bạn tạo lại mô hình của mình, bạn có thể thấy các quan hệ được thêm tự động (hoặc bạn có thể thêm các quan hệ theo cách thủ công)
public function relations()
{
return array(
'chairs' => array(self::HAS_MANY, 'chair', 'patientId'),
);
}
Và trong mô hình ghế, bạn sẽ thấy mối quan hệ
'patient' => array(self::BELONGS_TO, 'patient', 'patientId'),
Chỉ riêng việc xác định mối quan hệ cho phép bạn truy cập vào các giá trị trong mô hình được truy vấn dưới dạng $ model-> RelationsName, nếu bạn muốn sử dụng một cột trong điều kiện 'where', hãy sử dụng truy vấn sau trong (các) hàm mô hình của bạn
$patients=Patient::model()->findAll(array(
'condition' => "$field like '%$value%'",
'with'=>array('chairs'),
'select'=> "*",
));
Từ khóa "with" rất quan trọng và có thể lấy một mảng danh sách các quan hệ để đưa vào truy vấn. Điều kiện truy vấn sẽ áp dụng cho tất cả các bảng được bao gồm, Bạn có thể bỏ qua từ khóa "với" tại đây nếu bạn không muốn truy vấn một trường từ bảng khác và chỉ cần dữ liệu đầu ra được liên kết.
Và bạn có thể đến ghế được chỉ định cho bệnh nhân bằng
foreach($patients as $patient)print_r($patient->chairs);
Cũng có những cách tiếp cận khác, như một phương pháp được thảo luận tại đây
Để liên hệ nhiều hơn với các mối quan hệ, hãy truy cập đây