[Laravel] 다중 대 다중 관계(구조, 정의)
다대다 관계
표의 데이터는 다른 표의 여러 표 간의 관계와 서로 연결된다.
예:
SNS의'좋아요'처럼 여러 사용자와 여러 트위터를 연결하는 기능의 경우.
사용자는 여러 개의 트위터에 "좋아요"를 표시할 수 있습니다.
트위터는 여러 사용자에게'좋아요'를 받았다.
단지 두 개의 표만이 이런 다대다의 관계를 나타낼 수 없다.
중간표
두 표의 관계성을 나열한 중간표를 설정하여 중간표와 두 표가 각각 한 쌍의 관계를 결합시켜 중간표를 경유하는 여러 쌍의 관계를 형성한다.
users표, tweets표는 각각 한 쌍이 넘는 방식으로favorites표 (중간표) 와 연결됩니다.
방금의 관계는 아래와 같다.
user_id
tweet_id
일
일
일
이
이
이
이
삼
사용자 테이블과 트위터 테이블은favorites 테이블을 통해 서로의 id를 알 수 있습니다.
마이그레이션에서 외부 키 설정
favorites표 (중간표) 에서user와 트위터의 id를 참조하기 위해 키를 설정합니다.
public function up()
{
Schema::create('favorites', function (Blueprint $table) {
$table->unsignedInteger('user_id');
$table->unsignedInteger('tweet_id');
$table->primary(['user_id','tweet_id']);
// 外部キー制約
$table->foreign('user_id')->references('id')->on('courses')->onDelete('cascade');
$table->foreign('tweet_id')->references('id')->on('students')->onDelete('cascade');
});
}
모델에서 관계식 정의하기
belongsToMany () 에서 관계 방법을 정의합니다.방법명은 복수형이다.
User.php
class User extend Model
{
public function tweets()
{
return $this->belongsToMany(Tweet::class);
}
}
Tweet.php
class User extend Model
{
public function users()
{
return $this->belongsToMany(User::class);
}
}
나는 이런 관계의 정의가 잘 되었다고 생각한다.다중 링크 작업 (중간표의 insert,delete 작업), attach (), detach () 에 대해 서로 다른 보도로 정리했다.
다중 대 다중 관계 (링크 작업 정보)
Reference
이 문제에 관하여([Laravel] 다중 대 다중 관계(구조, 정의)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/rope19181/items/bcf7d6792f570082b920텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)