如何保存2个表之间的关系

问题描述 投票:2回答:2

如何将数据从一个表格保存到两个表格并保存它们之间的关系?

我有模特公司:

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

和模型地图:

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

和输入形式:

  • 公司名
  • 本地化(谷歌地图的纬度和长度)

和mysql表:

  • 公司(身份证,姓名等)
  • 地图(id,lat,long)
  • 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;
}

如何保存公司和地图之间的关系(company_id和map_id)?非常感谢! :)

laravel laravel-5 eloquent pivot
2个回答
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();
© www.soinside.com 2019 - 2024. All rights reserved.