2017-09-07 2 views
1

다음과 같은 시나리오가 있습니다 :Laravel : 어떤 관계를 사용해야합니까?

저는 아티스트가 도시에서 가장 좋아하는 장소를 보여주는 사이트를 만들고 있습니다. 그래서 : 일부는 Cities이고 일부는 Artists입니다. 도시 hasManySpots. Spot이 복수형 Artists으로 표시 될 수 있으므로 Artists과 도 함께 belongsToMany을 통해 관련됩니다.

는 지금

(그래서 기본적으로 그 도시에서 자리 관련된 예술가 확인) 나에게 그 도시에 등장하는 뭔가가있는 모든 예술가를 제공시의 관계를 정의 할

는 관계가 사용할 수있는 유형? 나는 hasManyThrough을 시도했지만, > 스팟이 많기 때문에 분명히 존재하지 않는 Artist에서 spot_id을 찾고 있습니다.

답변

1

많은 관계가있는 경우 두 테이블 모두에 대한 정규화가 필요하고 spot_id 및 artist_id를 저장할 새 테이블을 만듭니다. 나는 laravel에서 이미 그것을 처리한다고 생각합니다.

class City extends Model{ 
     public function artists(){ 
     return $this->belongsToMany('App\Artist') 
     } 
} 

아티스트 모델 : 도시 모델에서

: 당신이 belongsToMany 예를 사용하기 때문에,이 링크는 많은 관계로 많은 비록

https://laravel.com/docs/5.5/eloquent-relationships#many-to-many https://www.captechconsulting.com/blogs/resolve-your-many-to-manys-for-accurate-requirements

0

도움이 될 수 있습니다 :

class Artist extends Model{ 
     public function city(){ 
     return $this->belongsToMany('App\City') 
     } 
} 
+0

아티스트가 도시와 직접 연결되어 있지 않기 때문에 제 경우에는 작동하지 않습니다. 그들은 스팟 모델을 통해 있습니다 (스포트는 도시에 속하며, 스팟과 아티스트는 manyToMany 관계를 통해 관련됩니다) –

+0

그래서 도시 모델에서는 반점과의 관계를 제공 할 수 있고 사용하고자 할 때마다 예술가와 관계를 부여 할 수 있습니다 당신은 관광 명소로 사용할 수 있습니다. 예술가 – Nikita