2017-12-27 16 views
2

1つのフォームから2つのテーブルにデータを保存し、それらの間の関係を保存するにはどうすればいいですか?2テーブル間の関係を保存する方法

私はモデルの会社があります。

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

とモデルマップ:

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

と入力して形成:

  • 会社名
  • グーグルからのローカライズ(緯度と長いを地図)

と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と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(); 
関連する問題