yii는 특히 일대일적이고 다수의 관계를 다룰 때 관계형 데이터베이스와의 작업을 단순화하는 GII라는 강력한 개체 관계 매퍼 (ORM)를 제공합니다. 이러한 관계는 ActiveRecord를 사용하여 모델 클래스 내에서 정의됩니다.
일대일 관계 : 이것은 테이블의 한 레코드가 다른 테이블의 여러 레코드와 연관 될 수있는 시나리오를 나타냅니다. 예를 들어, 저자
모델에는 많은 book
모델이있을 수 있습니다. hasmany ()
메소드를 사용하여 저자
모델에서 이것을 정의합니다. yii를 사용하십시오. yii \ db \ activerecord를 사용하십시오; Class author는 activerecord {public static function tabename () {return 'audrors'; } public function getBooks () {return $ this- & gt; hasmany (book :: classname (), [ 'author_id'= & gt; 'id']); }}
이 예에서는 getBooks ()
관계를 정의합니다. book :: classname ()
관련 모델을 지정하고 [ 'author_id'= & gt; 'id']
author_id
books
테이블의 외국 키를 id
저자
테이블의 기본 키에 맵핑합니다. 이제 다음과 같은 저자의 책에 액세스 할 수 있습니다 : $ author- & gt; books
. 예를 들어, 학생
모델은 많은 코스
모델에 등록 될 수 있으며 코스
모델에는 학생
모델이 많을 수 있습니다. 이를 위해서는 두 테이블을 연결하기 위해 정션 테이블 (예 : wident_course
)이 필요합니다.
<code class="php"> & lt;? php namespace app \ models; yii를 사용하십시오. yii \ db \ activerecord를 사용하십시오; 클래스 학생 확장 activeRecord {public static function tabename () {return 'withying'; } public function getCourses () {return $ this- & gt; hasmany (course :: classname (), [ 'id'= & gt; 'course_id]]) -& gt; }} & lt;? php 네임 스페이스 앱 \ 모델; yii를 사용하십시오. yii \ db \ activerecord를 사용하십시오; 클래스 코스 확장 activereCord {public static function tabename () {return 'courses'; } public function getStudents () {return $ $ this- & gt; hasmany (whity :: classname (), [ 'id'= & gt; 'wichain_id]) -& gt; }} </code>
여기, viatable ()
정션 테이블과 외국 키 매핑을 지정합니다. $ 학생-& gt; 과정
및 코스 학생들을 사용하여 학생의 코스에 액세스 할 수 있으며 $ course- & gt; 학생
. 데이터베이스 상호 작용을 추상화하십시오. 이것은 코드 가독성과 유지 가능성을 향상시킵니다.
getbooks ()
, getcourses ()
) 사용 정확한 외국 키 매핑 : with ()
method) 단일 쿼리에서 관련 데이터를 가져 오기 위해. 예를 들어 $ author = author :: findone (1)-& gt; with ( 'books')-& gt; one ();
이것은 한 데이터베이스 쿼리에서 저자와 그들의 책을 검색합니다. $ author- & gt; books ()-& gt; where ([ '& gt;', '2023-01-01'])-& gt;
관련 데이터에 대한 작업 (생성, 읽기, 업데이트, 삭제) 작업은 데이터 일관성을 유지하기 위해 신중한 처리가 필요합니다.
author_id
. 트랜잭션을 사용하여 데이터 일관성을 확인하십시오. deleteall ()
를 사용하거나 트랜잭션 내 삭제 프로세스를 신중하게 처리하는 것을 고려하십시오. 특정 테이블과 모델 이름에 맞게이 예제를 조정하십시오. 데이터 무결성과 성능을 보장하기 위해 항상 코드를 철저히 테스트하십시오.
위 내용은 YII (일대일, 다수)의 관계형 데이터베이스를 어떻게 사용합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!