Pregunta

Leí a través de Lithium Data Model Query, pero no vi ejemplos de uniones.

¿Fue útil?

Solución

Hay múltiples formas de realizar una unión con el litio.

  1. Lithium manejará uniones para usted donde ha definido las relaciones (Ejemplos en el manual).
  2. Puede agregar uniones a un objeto de consulta existente usando el join() Método (ver el API)).
  3. Puede pasar una variedad de objetos de consulta a los buscadores utilizando la clave joins.
  4. Puede pasar el SQL directamente a una conexión usando Connection->read().

Los otros métodos están razonablemente bien documentados, por lo que daré un ejemplo de objetos de consulta que pase a un buscador.

$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
));

los source es la mesa a la que quieres unir y constraint es el criterio de unión. Litio aliasa la tabla de búsqueda al nombre del modelo, así que úselo en su restricción. Luego puede pasar las uniones a cualquier buscador junto con cualquier otro parámetro que desee.

Tenga en cuenta que al momento de escribir, se unen (y las relaciones) solo funcionarán con una base de datos relacional, no para cosas como DBREF de MongoDB.

Actualizar: Enlaces eliminados que han sido enlazados.

Otros consejos

Si configura una relación (usando Hasone, Hasmany o Pertaneto), puede obtener los datos relacionados suministrando un with clave en las opciones de su find llamar.

Como esto:

$categories = Categories::find('all', array(
  'with' => 'Products'
));

Revisar la Capítulo manual sobre relaciones para más detalles.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top