Существует несколько способов выполнить соединение с Lithium.
- Lithium будет обрабатывать соединения, для которых у вас есть определенные отношения ( примеры в руководстве ).
- Вы можете добавить объединения к существующему объекту Query, используя метод
join()
(см. API )).
- Вы можете передать массив объектов Query искателям, используя ключ
joins
.
- Вы можете передать SQL напрямую соединению, используя
Connection->read()
.
Другие методы достаточно хорошо документированы, поэтому я приведу пример передачи объектов Query в искатель.
$fields = array('id', 'name', 'slug');
$joins = array();
$joins[] = new Query(array(
'source' => 'client_tests',
'constraint' => array('Test.id' => 'client_tests.test_id'),
));
$conditions['client_id'] = $this->data['client_id'];
$tests = Test::all(array(
'conditions' => $conditions,
'fields' => $fields,
'joins' => $joins
));
source
- это таблица, к которой вы хотите присоединиться, а constraint
- это критерии объединения. Литий псевдоним таблицы поиска к названию модели, так что используйте это в вашем ограничении. Затем вы можете передать соединения любому искателю вместе с любыми другими параметрами, которые вы хотите.
Обратите внимание, что на момент написания объединения (и отношения) будут работать только с реляционной базой данных, но не для таких вещей, как DBRef MongoDB.
Обновление : Удалены ссылки, ссылки на которые были вставлены.