2016-10-17 2 views
0

laravels eloquent 매핑 기능을 이해하려고합니다. 나는 3 개 테이블 한 경우 :Laravel에 대한 이해가 서툴고 전통적인 테이블 매핑

Article 
Asset 
ArticleAssetMap 

기사 : 간단한 테이블, ID, 제목, 본문 등 날짜

자산 : 자산 경로 등

ArticleAssetMap 날짜 : 두 colums를. article_id, asset_id

전체 또는 일부 기사를 요청할 때지도 테이블을 확인하고지도가있는 경우 내 자산을 가져 오는 것을 내 모델에 설명하는 방법을 이해해야합니다.

나는 위의 모든 테이블에 대한 모델을 가지고 있고, reeteally 그것이 eloquents onetomany/belongssto 등 등 ...와 관련이 있다고 생각하지만 괜찮은 튜토리얼 나를 위해 그것을 무너 뜨리는 찾을 수 없습니다 ... 내가되고있다 바보 .. 거기에 좋은 방법은 '그것을 얻을 ..?

+0

이 laravel의 설득력은 "올바른 열"이름을 찾습니다. 예를 들어 자산 테이블의 기본 키는 asset_id입니다. 설명서에서 모델에 추가 매개 변수를 추가하여 PK 및 FK를 지정할 수 있습니다. – bwaaaaaa

+0

아, 내 자산 테이블은 'ID'가 priamry 키로 만 ... asset_id로 이름을 바꾸고 아티클 등에 대해서도 동일하게해야합니까? – Beertastic

+0

예 또는 필드 이름을 지정하십시오. 또한 laravel의 장인을 사용하여 모델 및 마이그레이션을 작성하십시오. 다음은 문서입니다. https://laravel.com/docs/5.3/eloquent-relationships#one-to-many – bwaaaaaa

답변

1

세 번째 테이블의 이름을 article_asset으로 지정하고 다음을 수행하십시오. 당신의 Article 클래스

당신의 Asset 클래스
// if one article has many assets 
public function assets() 
{ 
    return $this->hasMany(Asset::class); 
} 

// if one article has only one assets 
public function asset() 
{ 
    return $this->hasOne(Asset::class); 
} 

자산이 속하는 경우 기사

public function article() 
{ 
    return $this->belongsTo(Article::class); 
} 

하나에 자산이 많은 기사에 속하는 경우

public function articles() 
{ 
    return $this->belongsToMany(Article::class); 
} 

이제 가셔도 좋습니다.

+0

실제로는 Many to many의 경우 일 수 있습니다. 즉, 저작물은 여러 개의 저작물에 속할 수 있으며, 저작물에는 여러 저작물이 포함될 수 있습니다. – JofryHS

+0

기사를 추가하면 많은 자산 시나리오가 포함될 수 있습니다. 다른 사람 추가. –

+0

흠 .. 아니 .. 테이블 스키마를 기반으로 명확하게'ArticleAssetMap' 피벗 테이블입니다. 대부분 우리가'-> belongsToMany()'만 원할 것입니다. – JofryHS