관계형 데이터베이스의 백본은 데이터베이스 관계입니다. 테이블을 정의한 후에는 다른 테이블에 보관 된 데이터를 연결할 수 있습니다. 즉, 데이터베이스 관계는 데이터를 가져 오기 위해 조인 문을 사용하여 생성 된 테이블 간의 연결입니다. 이를 위해 한 테이블은 다른 테이블의 기본 키를 참조하는 외래 키를 사용합니다.
Table-A의 레코드는 Table-B의 일치하는 레코드 하나와 관련되고 Table-B의 각 레코드는 Table-A의 일치하는 레코드 하나와 관련됩니다.
Employee 테이블의 각 레코드는 약 한 명의 직원입니다. 해당 레코드는 Pay 테이블의 하나의 레코드에만 관련됩니다. Pay 테이블의 각 레코드는 Employee 테이블의 레코드 하나만 관련됩니다.
Table-A의 레코드는 Table-B에 일치하는 레코드를 많이 가질 수 있지만 Table-B의 레코드는 Table-A에 일치하는 레코드를 하나만 가질 수 있습니다.
일대 다 관계는 관계형 데이터베이스의 테이블간에 발견되는 가장 일반적인 관계입니다. 고객 테이블에는 각 고객에 대한 고유 한 레코드가 있습니다. 각 고객은 많은 주문을 할 수 있습니다. Order 테이블의 많은 레코드는 Customers 테이블의 하나의 레코드에만 관련 될 수 있습니다.
다 대다 관계에서 두 테이블의 각 레코드는 다른 테이블의 많은 레코드와 관련 될 수 있습니다. 이러한 관계에는 중간 테이블이라고하는 세 번째 테이블이 필요합니다.
고객과 주문 테이블 간의 관계는 일대 다입니다. 그러나 Order 테이블과 Product 테이블 간의 관계는 다 대다입니다. 주문에는 여러 제품이 포함될 수 있으며 여러 고객이 동일한 제품이 포함 된 주문을 제출할 수 있으므로 제품이 여러 주문에 연결될 수 있습니다. 이러한 종류의 관계에는 최소 세 개의 테이블이 필요합니다.
이제 이전 부분 인 마이그레이션 및 데이터 시드 에서 모델 간의 관계 생성에 대한 프로젝트를 계속해 보겠습니다 . 웅변 관계는 당신이 아주 쉬운 방법으로 테이블을 관계 할 수 Laravel에서 매우 중요한 기능입니다.
다음은 laravel-news 프로젝트에 관련된 엔티티의 ER 다이어그램 (엔티티 세트 간의 관계를 보여주는 ER 다이어그램)입니다 .
위의 ER 다이어그램을 기반으로 이제 모델 클래스에서 관계 메서드를 작성해 보겠습니다.
우리의 응용 프로그램에서 카테고리에는 많은 게시물이 있습니다.
class Category extends Model
{
...
public function posts(){
return $this->hasMany(Post::class);
}
...
}
class Comment extends Model
{
...
public function author(){
return $this->belongsTo(User::class, 'author_id', 'id');
} public function post(){
return $this->belongsTo(Post::class);
}
...
}
class Post extends Model
{
...
public function author(){
return $this->belongsTo(User::class, 'author_id', 'id');
}
public function category(){
return $this->belongsTo(Category::class);
}
public function comments(){
return $this->hasMany(Comment::class);
}
public function images(){
return $this->hasMany(Image::class);
}
public function videos(){
return $this->hasMany(Video::class);
}
public function tags(){
return $this->belongsToMany(Tag::class);
}
...
}
class Tag extends Model
{
...
public function posts(){
return $this->belongsToMany(Post::class);
}
...
}
class User extends Model
{
...
public function comments(){
return $this->hasMany(Comment::class, 'author_id', 'id');
}
public function posts(){
return $this->hasMany(Post::class, 'author_id', 'id');
}
...
}
이를 위해 '테스트'경로를 생성하겠습니다. routes\web.php
Route::get('test', function () {
$category = App\Models\Category::find(3);
// return $category->posts;
$comment = App\Models\Comment::find(152);
// return $comment->author;
// return $comment->post;
$post = App\Models\Post::find(152);
// return $post->category;
// return $post->author;
// return $post->images;
// return $post->comments;
// return $post->tags;
$tag = App\Models\Tag::find(5);
// return $tag->posts;
$author = App\Models\User::find(88);
// return $author->posts;
return $author->comments;
});
이제 우편 배달부 또는 유사한 응용 프로그램을 열고 GET 요청을 http://127.0.0.1:8000/test
모든 것이 잘 작동하면 다음과 같은 내용이 표시됩니다.
소스 코드는 https://github.com/mdutt247/laravel-news 참조 할 수 있습니다.
더 자세히 알아 보려면 Laravel Documentation을 확인하십시오 .
이 튜토리얼 의 이전 부분 인 마이그레이션 및 데이터 시드 를 읽으십시오 .
다음 부분 인 Laravel에서 RESTful API 생성 및 사용을 읽어보십시오 .
연결 : Twitter , GitHub , Linkedin
이 놀라운 노코드 플랫폼의 미개발 잠재력을 활용하면서 스릴 넘치는 혁신과 성공의 여정을 시작하십시오. 뛰어난 여성 기업가인 Sapna에 대한 이야기를 들려드리겠습니다.
트윗을 스트리밍하고 필터를 적용하여 시장 심리를 분석하는 Node.js 기반 트위터 봇을 만드는 방법을 알아봅시다! 소개 Twitter는 의견, 뉴스 및 아이디어를 공유하는 인기 있는 플랫폼입니다.
facebook.com에 요청하면 컴퓨터가 도메인 이름을 조회하여 해당 도메인 이름을 IP 주소로 변환하므로 컴퓨터가 해당 연결을 만들 수 있습니다.
소개:용감한 독자 여러분, 지구의 가장 어두운 곳으로 우리를 데려다 줄 여행에 오신 것을 환영합니다. 이 블로그에서 우리는 Mariana Trench의 수수께끼 같은 세계를 탐구하여 숨겨진 비밀을 밝히고 그 표면 아래에 있는 뼛속까지 오싹해지는 진실을 밝혀냅니다.
오늘날 빠르게 진화하는 비즈니스 환경에서 하이브리드 및 원격 작업의 개념은 전례 없는 추진력을 얻었습니다. 기업이 변화하는 직원의 요구와 기대에 지속적으로 적응함에 따라 다양한 분야의 전문가들이 모여 이 혁신적인 작업 방식의 이점, 과제 및 미래에 대해 논의했습니다.
모호함을 피하기 위해 다음 용어가 사용됩니다. 인증자; 로그인 웹사이트를 만드는 데 사용되는 휴대폰 사용자가 로그인 요청 서비스를 만들기 위해 사용하는 웹사이트 또는 애플리케이션 주어진 서비스를 제공하는 벤더 예.