CakePHP의 찾기 메서드로 테이블 조인
CakePHP 찾기 메서드로 여러 테이블에서 데이터를 검색하려면 다음 옵션을 고려하세요.
표준 케이크PHP 방법
actAs 및 hasMany 또는 ownTo 속성을 사용하여 모델 간의 관계를 설정하세요. 예:
class User extends AppModel { public $actsAs = ['Containable']; public $hasMany = ['Message']; } class Message extends AppModel { public $actsAs = ['Containable']; public $belongsTo = ['User']; }
그런 다음 포함 가능한 동작을 사용합니다.
$this->Message->find('all', [ 'contain' => ['User'], 'conditions' => ['Message.to' => 4], 'order' => 'Message.datetime DESC' ]);
사용자 정의 조인
찾기 방법 내에서 사용자 정의 조인을 정의합니다. :
$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 extends AppModel { public $actsAs = ['Containable']; public $hasMany = ['MessagesSent' => ['className' => 'Message', 'foreignKey' => 'from']]; public $belongsTo = ['MessagesReceived' => ['className' => 'Message', 'foreignKey' => 'to']]; } class Message extends AppModel { public $actsAs = ['Containable']; public $belongsTo = ['UserFrom' => ['className' => 'User', 'foreignKey' => 'from']]; public $hasMany = ['UserTo' => ['className' => 'User', 'foreignKey' => 'to']]; }
콜 찾기:
$this->Message->find('all', [ 'contain' => ['UserFrom'], 'conditions' => ['Message.to' => 4], 'order' => 'Message.datetime DESC' ]);
위 내용은 Find 메소드를 사용하여 CakePHP에서 테이블을 효율적으로 조인하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!