i have related tables in database , i'm able create record it's foreign keys successfully, cant figure out how edit , update record
below store code gets inputs form:
public function store(request $request){ $account = new account; $type = new type; $agency = new agency; $client = new client; $agency->name = $request->input('agency_name'); $agency->save(); $type->name= $request->input('type_name'); $type->save(); $client->name= $request->input('client_name'); $client->save(); $account->client()->associate($client); $account->type()->associate($type); $account->agency()->associate($agency); $account->username = $request->username; $account->password = $request->password; $account->save(); return redirect('accounts'); }
the above stores record successfully, dont know how edit it, below pulls account data in edit fields doenst show account_id field, type_id , client_id fields blank:
public function edit(request $request, $id) { $account=account::find($id); return view('accounts.edit',compact('account')); }
my update code, goes here?
public function update(request $request, $id) { // ??? return redirect('accounts'); }
so, should change store function -
public function store(request $request) { $account = new account; $type = type::wherename($request->type_name); if (!is_null($type)) { $type = $type->first(); }else{ $type = type::create(['name' => $request->type_name]); } $agency = agency::wherename($request->agency_name); if (!is_null($agency)) { $agency = $agency->first(); }else{ $agency = agency::create(['name' => $request->agency_name]); } $client = client::wherename($request->client_name); if (!is_null($client)) { $client = $client->first(); }else{ $client = agency::create(['name' => $request->client_name]); } $account->client()->associate($client); $account->type()->associate($type); $account->agency()->associate($agency); $account->site_url = $request->site_url; $account->login_url = $request->login_url; $account->username = $request->username; $account->password = $request->password; $account->server_ip = $request->server_ip; $account->database = $request->database; $account->other = $request->other; $account->save(); return redirect('accounts'); }
now, once add account , open edit form, should able see type, agency & client.
as update method, need (assuming you're passing in agency, type & client -
public function update(request $request, $id) { $account = account::find($id); $type = type::wherename($request->type['name']); if (!is_null($type)) { $type = $type->first(); }else{ $type = type::create(['name' => $request->type['name']]); } $agency = agency::wherename($request->agency['name']); if (!is_null($agency)) { $agency = $agency->first(); }else{ $agency = agency::create(['name' => $request->agency['name']]); } $client = client::wherename($request->client['name']); if (!is_null($client)) { $client = $client->first(); }else{ $client = agency::create(['name' => $request->client['name']]); } $account->client()->associate($client); $account->type()->associate($type); $account->agency()->associate($agency); $account->site_url = $request->site_url; $account->login_url = $request->login_url; $account->username = $request->username; $account->password = $request->password; $account->server_ip = $request->server_ip; $account->database = $request->database; $account->other = $request->other; $account->save(); $request->session()->flash('alert-success', 'account updated'); return redirect('accounts'); }