CakePHP 프레임워크 모델 관련 객체 사용법 분석

4450 단어
본고의 실례는 CakePHP 프레임워크 모델 관련 대상을 설명한다.여러분에게 참고하도록 공유하겠습니다. 구체적으로는 다음과 같습니다.
CakePHP는 4가지 유형의 연관 데이터 테이블 간의 매핑을 제공합니다.hasOne , hasMany , belongTo , hasAndBelongsToMany .
모델 간의 연관 관계 정의를 설정하면 CakePHP는 관계 데이터베이스 기반 데이터를 객체 기반 관계 모델로 매핑합니다.
하지만 CakePHP의 명칭 규칙을 따라야 합니다.
명명 규칙에서 고려해야 할 세 가지 내용은 외부 키, 모델 이름, 표 이름이다.
외부 키:단일 모델 Nameid표명: 복수형식의 모델명 모델명: 낙타봉법명명단수형식(파일 inflector.php 참조).
hasOne 관련 정의와 조회: 모델에 array를 추가하여 실현합니다.

class User extends AppModel
{
  var $name = 'User';
  var $hasOne = array(
    'UserInfos' => array(
      'className' => 'UserInfos',
      'conditions' => '',
      'order'=> '',
      'dependent' => true,
      'foreignKey' => 'user_id'
    )
  );
}


$hasOne 변수는 array입니다.CakePHP는 이 변수를 통해 Blog와 User 간의 연결을 구축합니다.
className: 연결된 객체의 클래스 이름입니다.conditions: 관련 대상의 선택 조건입니다.order: 관련 대상의 배열 방식.dependent: 이것은 부울 값입니다.true라면 부모 대상이 삭제될 때 연결된 하위 대상을 단계적으로 삭제합니다.foreignKey: 연결된 모델의 키 필드 이름을 가리키며, Cake의 이름 규약을 따르지 않을 때만 설정해야 합니다.
belongsTo 관련 정의 및 사용

class Blog extends AppModel
{
  var $name = 'Blog';
  var $belongsTo = array(
    'User' => array(
      'className' => 'User',
      'conditions' => '',
      'order' => '',
      'foreignKey' => 'user_id'
    )
  );
}


className: 연결된 객체의 클래스 이름입니다.conditions: 연관된 객체를 제한하는 SQL 조건 서브문장order: 관련 대상의 정렬 서브문장입니다.foreignKey: 연결된 객체에 해당하는 외부 키 필드 이름입니다.
hasMany 관련 정의 및 질의

class User extends AppModel
{
  var $name = 'User';
  var $hasMany = array(
    'Blog' => array(
      'className' => 'Blog',
      'conditions' => 'Blog.status = 1',
      'order' => 'Blog.created DESC',
      'limit' => '5',
      'foreignKey' => 'user_id',
      'dependent' => true,
      'exclusive' => false, 'finderQuery' => ''
    )
  );
}


$hasMany array는 User에 여러 개의 Blog와 같은 연관 관계가 있음을 정의합니다.
className: 객체 클래스 이름을 연결합니다.conditions: 관련 대상 제한 조건.order: 관련 대상 배열 자구.
limit: limit으로 검색의 관련 대상 수량을 제한합니다.
foreignKey: 외부 키 필드 이름.dependent: 단계별로 삭제할지 여부입니다.exclusive: TRUE이면 모든 관련 대상이 SQL에서 삭제되고 모델의 before Delete 리셋 함수는 실행되지 않습니다.finderQuery: 관련 대상을 검색할 수 있는 완전한 SQL 문장을 정의합니다. 관련 규칙을 최대한 제어할 수 있습니다.
또한 Blog에 User 객체와 연관된 belongTo 연관을 추가할 수 있습니다.
hasAndBelongsTomany와 관련된 정의와 조회.

class Blog extends AppModel
{
  var $name = 'Blog';
  var $hasAndBelongsToMany = array('Tag' =>
    array('className'  => 'Tag',
       'joinTable'  => 'blogs_tags',
       'foreignKey'  => 'blog_id',
       'associationForeignKey'=> 'tag_id',
       'conditions'  => '',
       'order'    => '',
       'limit'    => '',
       'uniq'     => true,
       'finderQuery' => '',
       'deleteQuery' => '',
    )
    );
}


$hasAndBelongsTomany array는 HABTM 연관을 정의하는 변수입니다.
className: 객체 클래스 이름을 연결합니다.joinTable: Cake의 명칭 약정에 따라 관련 테이블을 만들지 않으면 이 키를 설정해서 관련 테이블을 지정해야 합니다.foreignKey: 이 모드가 연결된 테이블의 키 필드를 정의합니다.associationForeignKey: 연결 테이블에서 연결 대상을 가리키는 키 필드 이름입니다.conditions: 관련 대상 제한 조건.order: 관련 대상 정렬 서브문장.limit: 관련 대상 수량 제한.uniq:true로 설정하면 중복된 관련 대상이 필터됩니다.finderQuery: 완전한 관련 대상 검색 문장입니다.deleteQuery: 연관된 관계를 완전히 삭제한 SQL 문입니다.
연관된 객체를 저장하려면 다음과 같이 하십시오.
연관된 두 대상이 모두 지속되지 않으면 먼저 주 대상을 지속시켜야 한다.
하위 객체를 저장할 때는 상위 객체의 ID를 하위 객체에 유지합니다.
hasAndBelongsTomany 연관 객체를 저장하려면 다음과 같이 하십시오.bindModel()unbindModel()를 사용하여 실시간으로 관계식을 변경합니다.
php 프레임워크와 관련된 내용에 관심이 있는 더 많은 독자들은 본 사이트의 주제를 보실 수 있습니다.,,,,,,,,,,,,,,,,
본 논문에서 서술한 것이 여러분의 PHP 프로그램 설계에 도움이 되었으면 합니다.

좋은 웹페이지 즐겨찾기