Método de localização do CakePHP com JOIN
O método de localização do CakePHP fornece uma maneira poderosa de recuperar dados do banco de dados, incluindo unir tabelas. Este artigo demonstra dois métodos para realizar uma consulta JOIN usando o método find do CakePHP.
Método 1: Utilizando relacionamentos de modelo
Este método envolve definir relacionamentos entre seus modelos e usar o comportamento contido. Considere os seguintes relacionamentos de modelo:
class User extends AppModel {
public $hasMany = array('Message');
}
class Message extends AppModel {
public $belongsTo = array('User');
}
Com esta configuração, você pode realizar a seguinte consulta no MessagesController:
$this->Message->find('all', array(
'contain' => array('User'),
'conditions' => array(
'Message.to' => 4
),
'order' => 'Message.datetime DESC'
));
Esta consulta irá buscar todas as mensagens onde o destinatário (campo para) for 4 e também incluirá as informações do usuário correspondentes para cada mensagem.
Método 2: Sintaxe de junção personalizada
Alternativamente, você pode definir junções personalizadas usando a sintaxe do CakePHP. Essa abordagem é adequada quando você precisa de mais controle sobre as condições de junção:
$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'
));
Observe que neste exemplo, você precisaria alterar o nome do campo messages.from para messages.user_id para corresponder à convenção do CakePHP.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3