2017-12-27 452 views
2

如何將數據從一個表格保存到兩個表格並保存它們之間的關係?如何保存2個表格之間的關係

我有模特公司:

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

和模式地圖:

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

,並形成輸入:

  • 公司名稱
  • 本地化(lat和長從谷歌地圖)

和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 etween Comapny和Map(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();