2017-12-27 453 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();