2017-12-27 25 views
2

한 폼에서 두 테이블로 데이터를 저장하고 이들 사이의 관계를 저장하는 방법은 무엇입니까?두 테이블 간의 관계를 저장하는 방법

나는 모델 회사가 있습니다

public function maps() 
{ 
    return $this->belongsTo('App\Map'); 
} 

및 모델지도 : 구글에서 긴

  • 회사 이름
  • 현지화 (위도와 :

    public function companies() 
    { 
        return $this->hasOne('App\Company'); 
    } 
    

    및 양식 입력이 지도)

  • (210 개)

와 MySQL 테이블 :

  • 회사 (ID, 이름 등)
  • 지도 (ID, 위도, 긴)
  • company_map (COMPANY_ID, MAP_ID)

상점 :

public function store(CreateCompanyFormRequest $request) 
{ 
$input = Request::all(); 
$company = new Company($request->all()); 
Auth::user()->companies()->save($company); 
$lat = $request->input('lat'); 
$long = $request->input('long'); 
$maps = new Map([ 
    'lat' => $lat, 
    'long' => $long 
    ]); 
$maps->save(); 
return $input; 
} 

관계 b를 저장하는 방법 Comapny와지도 사이 (company_id 및 map_id)? 최고 감사합니다! 그건 때문에 :)

답변

1

대다 관계는, 사용 attach() :

public function store(CreateCompanyFormRequest $request) 
{ 
    $company = auth()->user()->companies()->create($request->all()); 
    $maps = Map::create($request-all()); 
    $company->maps()->attach($map->id); 
    return back()->withInput(); 
} 
0

당신이 당신의 관계를 변경해야합니다 우선 피벗 테이블 company_map 사용하는 경우

public function maps() 
{ 
    return $this->belongsToMany('App\Map'); 
} 

public function companies() 
{ 
    return $this->belongsToMany('App\Company'); 
} 

다음을 추가해야합니다.

$maps->companies()->attach($company->id); 

후 :

$maps->save();