Método de búsqueda de CakePHP con JOIN
El método de búsqueda de CakePHP proporciona una manera poderosa de recuperar datos de la base de datos, incluida la unión de tablas. Este artículo demuestra dos métodos para realizar una consulta JOIN usando el método de búsqueda de CakePHP.
Método 1: Utilizar las relaciones del modelo
Este método implica definir relaciones entre sus modelos y usar el comportamiento contenible. Considere las siguientes relaciones de modelo:
class User extends AppModel {
public $hasMany = array('Message');
}
class Message extends AppModel {
public $belongsTo = array('User');
}
Con esta configuración, puede realizar la siguiente consulta desde MessagesController:
$this->Message->find('all', array(
'contain' => array('User'),
'conditions' => array(
'Message.to' => 4
),
'order' => 'Message.datetime DESC'
));
Esta consulta buscará todos los mensajes cuyo destinatario (campo de destino) sea 4 y también incluirá la información de usuario correspondiente para cada mensaje.
Método 2: Sintaxis de unión personalizada
Como alternativa, puede definir uniones personalizadas utilizando la sintaxis de CakePHP. Este enfoque es adecuado cuando necesita más control sobre las condiciones de unión:
$this->Message->find('all', array(
'joins' => array(
array(
'table' => 'users',
'alias' => 'UserJoin',
'type' => 'INNER',
'conditions' => array(
'UserJoin.id = Message.from'
)
)
),
'conditions' => array(
'Message.to' => 4
),
'fields' => array('UserJoin.*', 'Message.*'),
'order' => 'Message.datetime DESC'
));
Tenga en cuenta que en este ejemplo, deberá cambiar el nombre del campo mensajes.de a mensajes.user_id para que coincida con la convención de CakePHP.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3