"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > CakePHP의 Find 메소드를 사용하여 JOIN 쿼리를 수행하는 방법은 무엇입니까?

CakePHP의 Find 메소드를 사용하여 JOIN 쿼리를 수행하는 방법은 무엇입니까?

2024-11-06에 게시됨
검색:188

How to Perform JOIN Queries Using CakePHP\'s Find Method?

JOIN을 사용한 CakePHP 찾기 메서드

CakePHP 찾기 메서드는 테이블 조인을 포함하여 데이터베이스에서 데이터를 검색하는 강력한 방법을 제공합니다. 이 문서에서는 CakePHP의 find 메소드를 사용하여 JOIN 쿼리를 수행하는 두 가지 방법을 보여줍니다.

방법 1: 모델 관계 활용

이 방법에는 모델 간의 관계를 정의하고 억제 가능한 행동. 다음 모델 관계를 고려하십시오.

class User extends AppModel {
    public $hasMany = array('Message');
}

class Message extends AppModel {
    public $belongsTo = array('User');
}

이 설정을 사용하면 MessagesController에서 다음 쿼리를 수행할 수 있습니다.

$this->Message->find('all', array(
    'contain' => array('User'),
    'conditions' => array(
        'Message.to' => 4
    ),
    'order' => 'Message.datetime DESC'
));

이 쿼리는 수신자(받는 사람 필드)가 4인 모든 메시지를 가져오며 각 메시지에 해당하는 사용자 정보도 포함합니다.

방법 2: 사용자 정의 조인 구문

또는 CakePHP의 구문을 사용하여 사용자 정의 조인을 정의할 수 있습니다. 이 접근 방식은 조인 조건에 대한 더 많은 제어가 필요할 때 적합합니다:

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

이 예에서는 CakePHP 규칙과 일치하도록 필드 이름 message.from을 message.user_id로 변경해야 합니다.

릴리스 선언문 이 글은 1729175536에서 재인쇄되었습니다. 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3