CakePHP 찾기 메서드에서 JOIN 사용
CakePHP 2.x에서 JOIN을 사용하여 여러 테이블에서 데이터를 검색하려면 두 가지 방법을 사용할 수 있습니다.
방법 1: CakePHP 방식 (권장)
관계 정의: 소속 및 hasMany 연관을 사용하여 모델 간 관계를 생성합니다.
찾기 방법 사용: 다음 쿼리를 실행하세요. MessagesController:
$this->Message->find('all', [ 'contain' => ['User'], 'conditions' => ['Message.to' => 4], 'order' => 'Message.datetime DESC' ]);
방법 2: 사용자 정의 JOIN
수동으로 조인 정의: 찾기에서 조인 조건을 직접 지정
$this->Message->find('all', [ 'joins' => [ [ 'table' => 'users', 'alias' => 'UserJoin', 'type' => 'INNER', 'conditions' => ['UserJoin.id = Message.from'] ] ], 'conditions' => ['Message.to' => 4], 'fields' => ['UserJoin.*', 'Message.*'], 'order' => 'Message.datetime DESC' ]);
동일 모델에 두 관계 사용
동일 모델에 두 관계를 사용하려면 별도의 관계를 정의할 수 있습니다. 다음과 같은 모델에서:
class User { ... public $belongsTo = ['MessagesReceived', 'MessagesSent']; ... } class Message { ... public $belongsTo = ['UserFrom', 'UserTo']; ... }
그런 다음 find 메소드를 적절한 관계:
$this->Message->find('all', [ 'contain' => ['UserFrom'], 'conditions' => ['Message.to' => 4], 'order' => 'Message.datetime DESC' ]);
위 내용은 CakePHP의 find 메소드로 JOIN을 효율적으로 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!