Quá nhiều người viết mã cố gắng tự giới hạn chức năng của một khuôn khổ. ĐỪNG. Sử dụng những gì mà khuôn khổ cung cấp. Nếu nó không có chức năng mà bạn tìm kiếm, thì hãy:
- Mã chức năng bạn cần vào tiện ích mở rộng lớp học
hoặc
- Tùy chỉnh quay mã trong khuôn khổ để phù hợp với nhu cầu của bạn.
Thông thường, các nhà phát triển cố gắng đóng một cái chốt hình vuông vào một lỗ tròn và làm quá nhiều công việc bổ sung mà chỉ thực sự làm cho mã trở nên phức tạp. Lùi lại một bước và hỏi tại sao bạn lại sử dụng framework để bắt đầu. Nó mang lại cấu trúc cho một ngôn ngữ phi cấu trúc. Nó cung cấp nền tảng có thể tái sử dụng vững chắc để xây dựng ứng dụng của bạn. Nó không phải là một cái hộp để đặt bạn vào và bị giới hạn.
CẬP NHẬT:Tôi đã dành một phút để đọc Điều kiện Tìm Phức tạp và tìm thấy câu trả lời của bạn:
$joins = array(
array(
'table' => 'test_twos',
'alias' => 'TestTwo',
'type' => 'LEFT',
'conditions' => array(
'TestTwo.id = TestOne.id',
)
),
array(
'table' => 'test_threes',
'alias' => 'TestThree',
'type' => 'LEFT',
'conditions' => array(
'TestThree.id = TestOne.id',
)
)
);
$dbo = $this->getDataSource();
$subQuery = $dbo->buildStatement(
array(
'fields' => array('*'),
'table' => $dbo->fullTableName($this),
'alias' => 'TestOne',
'limit' => null,
'offset' => null,
'joins' => $joins,
'conditions' => null,
'order' => null,
'group' => null
),
$this->TestOne
);
$query = $subQuery;
$query .= ' UNION ';
$joins = array(
array(
'table' => 'test_twos',
'alias' => 'TestTwo',
'type' => 'LEFT',
'conditions' => array(
'TestTwo.id = TestOne.id',
)
),
array(
'table' => 'test_threes',
'alias' => 'TestThree',
'type' => 'RIGHT',
'conditions' => array(
'TestThree.id = TestOne.id',
)
)
);
$dbo = $this->getDataSource();
$subQuery = $dbo->buildStatement(
array(
'fields' => array('*'),
'table' => $dbo->fullTableName($this),
'alias' => 'TestOne',
'limit' => null,
'offset' => null,
'joins' => $joins,
'conditions' => null,
'order' => null,
'group' => null
),
$this->TestOne
);
$query .= $subQuery;
pr($query);