Laravel에서 다수의 관계를 정의하는 방법은 무엇입니까?
Laravel에서 다수의 관계를 정의하려면 모델과 마이그레이션을 만들고, 웅변적인 관계를 정의하고, 관련 방법을 사용하여 운영해야합니다. 1. 사용자 및 역할 모델 및 역할 _USER 협회 테이블 마이그레이션을 만들고, 외래 키를 설정하고, 고유 인덱스를 추가하여 복제를 방지하십시오. 2. RECOLE () 메소드 정의 () 사용자 모델 및 RETURN SONGSMOMANY (역할 :: 클래스), RECOL MODEL 및 RETURN SOLTSMONY (user :: Class)에서 사용자 정의 () 메소드를 정의하십시오. 3. 첨부, 분리, 동기화 및 다음과 같은 방법을 통해 관계를 관리합니다. 협회 테이블에 추가 데이터가 필요한 경우 마이그레이션에 timestamps ()를 추가하고 관계 메소드에서 withpivot () 및 withtimestamps ()를 사용한 다음 피벗 속성을 통해 데이터에 액세스하고 마지막으로 완전한 관계 관리를 달성 할 수 있습니다.
Laravel에서 다수의 관계를 정의하는 것은 웅변적인 모델과 피벗 (또는 정션) 테이블을 사용하여 간단합니다. 이러한 유형의 관계는 테이블의 한 레코드가 다른 테이블의 여러 레코드와 관련 될 수 있고 그 반대도 마찬가지입니다. 예를 들어 사용자 및 역할 : 사용자는 여러 역할을 수행 할 수 있으며 역할은 여러 사용자에게 속할 수 있습니다.

설정하는 방법은 다음과 같습니다.
1. 모델과 마이그레이션을 만듭니다
먼저 두 가지 모델 (예 : User
및 Role
)과 피벗 테이블을 연결할 수 있는지 확인하십시오.

PHP Artisan Make : 모델 역할 -M
피벗 테이블은 알파벳 순서 (Laravel Convention)로 두 모델 이름의 단일 형태를 사용하여 이름을 지정해야합니다.
PHP Artisan Make : 마이그레이션 create_role_user_table-create = role_user
마이그레이션 파일에서 :

schema :: create ( 'role_user', function (blueprint $ table) { $ table-> id (); $ table-> forexid ( 'user_id')-> ranstreated ()-> ondelete ( 'cascade'); $ table-> forexiD ( 'role_id')-> ranstreated ()-> ondelete ( 'cascade'); $ table-> 고유 한 ([ 'user_id', 'role_id']); // 복제 방지 });
마이그레이션 실행 :
PHP 장인 이주
2. 웅변적인 모델에서 관계를 정의하십시오
User
모델에서 :
// app/models/user.php Illuminate \ Database \ Eloquent \ Model을 사용하십시오. 클래스 사용자는 모델을 확장합니다 { 공개 기능 역할 () { return $ this-> soldstomany (역할 :: class); } }
Role
모델에서 :
// 앱/모델/역할 .php Illuminate \ Database \ Eloquent \ Model을 사용하십시오. 클래스 역할은 모델을 확장합니다 { 공개 기능 사용자 () { return $ this-> soldstomany (user :: class); } }
컨벤션에 따라 Laravel은 role_user
테이블과 user_id
/ role_id
외래 키로 사용합니다. 테이블이나 키가 다른 경우 다음을 지정할 수 있습니다.
return $ this-> soldstomany (역할 :: class, 'custom_table', 'user_foreign_key', 'role_foreign_key');
3. 관계 사용
이제 관계를 쉽게 작업 할 수 있습니다.
사용자의 모든 역할을 얻으십시오.
$ user = user :: find (1); foreach ($ user-> 역할로 $ 역할) { echo $ role-> name; }
사용자에게 역할을 첨부하십시오.
$ user-> roboles ()-> att
역할 분리 :
$ user-> roboles ()-> detach ($ reaconId);
역할 동기화 (이 목록으로 모두 대체) :
$ user-> roles ()-> sync ([1, 2, 3]);
사용자가 역할이 있는지 확인하십시오.
if ($ user-> roles-> contains ( 'id', $ reaconId)) { // 사용자가 역할을합니다 }
보너스 : 피벗 테이블에 추가 데이터 추가
피벗에 추가 데이터를 저장 해야하는 경우 ( created_at
, expires_at
등) 마이그레이션에서 타임 스탬프를 활성화하십시오.
$ table-> timestamps ();
그런 다음 관계에서 withPivot()
사용하십시오.
공개 기능 역할 () { return $ this-> soldstomany (역할 :: class)-> witpivot ( 'eppires_at')-> withtimestamps (); }
다음과 같은 피벗 데이터에 액세스하십시오.
$ user-> rolight-> first ()-> pivot-> expires_at;
기본적으로 그게 다야. Laravel의 belongsToMany
복잡성을 처리하며 올바른 테이블 구조를 사용하면 깨끗하고 강력한 다수의 설정을 얻을 수 있습니다.
위 내용은 Laravel에서 다수의 관계를 정의하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undress AI Tool
무료로 이미지를 벗다

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

Laravel의 구성 캐시는 모든 구성 파일을 단일 캐시 파일로 병합하여 성능을 향상시킵니다. 생산 환경에서 구성 캐시를 활성화하면 각 요청에서 I/O 운영 및 파일 구문 분석이 줄어들어 구성로드 속도를 높일 수 있습니다. 1. 응용 프로그램을 배포 할 때 활성화되어야하며 구성이 안정적이며 자주 변경되지 않아야합니다. 2. 활성화 후 구성을 수정 한 후 PhPartisAnconfig를 다시 실행해야합니다. 3. 구성 파일의 런타임 조건에 의존하는 동적 로직 또는 클로저를 사용하지 마십시오. 4. 문제 해결 문제가 발생하면 먼저 캐시를 지우고 .env 변수를 확인하고 다시 캐시해야합니다.

THETRANSLATORFACADEINLARAVELISOUDFORLOCALIDITEBETCHETTRINGSTRINGS 및 SWITCHINGLANGUAGESATRUNTIME.TOUNEST, StoretRanslationStringsInlanguageFilesunderThelangdirectory (예 : EN, ES, FR), get (get () 또는 Helperfunction, helperfunction, helperfunction

USEMOCKERYFORCUSTOMDENCENTICESBYSETEXPINTIONSWITHSHOULDRECEIVE ()

Laravel의 eloquentscopes는 로컬 범위와 글로벌 범위로 나뉘어져있는 공통 쿼리 로직을 캡슐화하는 도구입니다. 1. 로컬 범위는 스코프로 시작하는 메소드로 정의되며 Post :: published (); 2. 글로벌 범위는 모든 쿼리에 자동으로 적용되며 종종 소프트 삭제 또는 다중 테넌트 시스템에 사용되며 스코프 인터페이스를 모델에 구현하고 등록해야합니다. 3. 스코프에는 연도 또는 월별 필터링 기사와 같은 매개 변수가 장착 될 수 있으며 호출 할 때 해당 매개 변수가 전달됩니다. 4. 코드 선명도 및 재사용 성을 개선하는 데 사용할 때 명명 사양, 체인 호출, 임시 비활성화 및 조합 확장에주의하십시오.

Checkphp> = 8.1, Composer, andwebserver; 2. CloneorcreateProjectandruncomposerInstall; 3.copy.env.exampleto.envandrunphpartisankey : 생성; 4. 4. SetDatabasecredentitySin.envandRunphPartisanMigrate-Seed; 5.StartServerWithPhPartisAnserve; 6.OptionalLyRunnpmins

추천, 추천, 추천 코드 및 사용 시간을 포함하여 추천 관계를 기록 할 추천 테이블을 작성합니다. 2. 추천 데이터를 관리하기 위해 사용자 모델의 SONGSTOMONY 및 HASMANY 관계 정의; 3. 등록 할 때 고유 한 권장 코드를 생성합니다 (모델 이벤트를 통해 구현할 수 있음). 4. 등록 중 매개 변수를 쿼리하여 권장 코드를 캡처하고 확인 후 권장 관계를 설정하고 자체 권장을 방지합니다. 5. 권장 사용자가 지정된 동작 (구독 순서)을 완료하면 보상 메커니즘을 트리거합니다. 6. 공유 가능한 추천 링크를 생성하고 Laravel Signature URL을 사용하여 보안을 향상시킵니다. 7. 총 권장 사항 수 및 변환 숫자와 같은 대시 보드에 권장 통계를 표시합니다. 데이터베이스 제약, 세션 또는 쿠키가 지속되도록해야합니다.

CreateAhelpers.phpfileInapp/helperswithCustOmFunctionsikeFormatPrice, isactiveroute, andisAdmin.2.addTheFileTothe "파일"sectionOfcomposer.jsonUnderAutoLoad.3.runcomposerDump-AUTOLOADTOMAKETHINGTICTIONSGLOBELYAVAILABLE.4.USETHEHELPERFUNCUNTION

chooseafeatureflagsTrategysuchasconfig 기반, 데이터베이스-구동, Orthird-PartyTools Likeflagsmith.2.setupadatabase-drivensystembycreatingAmigrationforAfeature_flagstablewithName, enabled, andrulesfields, thenruntheMigration.3.createfeatureffillew withfilla
