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 프로그램 설계에 도움이 되었으면 합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.