2016-04-18 15 views
0

Problem ist einfach Ich habe ein Formular, das Daten in Handyments Tabelle (alles außer Kontrollkästchen) und Skill-Tabelle (Kontrollkästchen) eingefügt, aber diese sind über Junction-Tabelle verbunden und wenn ich auf Absenden klicken, Daten wird zu beiden Tabellen hinzugefügt, aber wie mache ich es eine Junction-Tabelle aktualisieren, um eine neue Zeile hinzuzufügen, mit skill_id und handyman_id gerade hinzugefügt?Aktualisierung der Junction-Tabelle mit Laravel

function addhandyman() 
{ 
    return view('layouts/addhandyman'); 
} 
function pushdetails(Request $request) 
{ 
$handyman = new Handyman(); 
    $handyman->first_name = $request->first_name; 
    $handyman->last_name = $request->last_name; 
    $handyman->street = $request->street; 
    $handyman->postcode = $request->postcode; 
    $handyman->town = $request->town; 
    $handyman->save(); 
    $skill = new Skill(); 
    $skill->skill = $request->skill; 
    $skill->save(); 
    return redirect('addhandyman'); 
} 

@section('content') 
<h1>Add new Handyman</h1> 
    <form action="{{url('pushdetails')}}" method="POST"> 
    {{ csrf_field() }} 
     <div> 
      <input type='text' name='first_name' placeholder='Enter First Name' /> 
      <input type='text' name='last_name' placeholder='Enter Last Name' /> 
      <input type='text' name='street' placeholder='Enter your Street' /> 
      <input type='text' name='postcode' placeholder='Enter your postcode' /> 
      <input type='text' name='town' placeholder='Enter your town' /> 
      <label>Carpenter</label> 
      <input type='checkbox' name='skill' value='Carpenter' /> 
      <label>Plumber</label> 
      <input type='checkbox' name='skill' value='Plumber' /> 
      <label>Painter</label> 
      <input type='checkbox' name='skill' value='Painter' /> 
     </div> 
    <input type="submit" name="submitBtn" value="Add new Handyman"> 
    </form> 
@endsection 

Wenn andere Dateien/Code erforderlich ist, lassen Sie es mich wissen. Brauche dringend Hilfe! Vielen Dank!

+0

Wäre es nicht mehr Sinn machen, eine Beziehung hier many-to-many zu bedienen? Du willst nicht mit mehreren "Carpenter" Skills enden? Sie wollen nur einen Handwerker mit dem Skill 'Carpenter' verbinden. – Robert

Antwort

1

Das Tolle an Laravel Models (Eloquent): Wenn Sie eine neue Ressource/ein neues Modell erstellen, wird die neu erstellte Primärschlüssel-ID von Ihrer neuen Ressource in Ihre Datenbank übernommen. So

wenn Sie das tun:

$model = new Model(); 
$model->field = "value"; 
$model->save(); 
// This will actually already have the Primary Key ID in it. 
$mID = $model->id; 

So ist die manuelle Art und Weise wäre die getrennte IDs von den Models zu extrahieren und sie dann in die Tabelle manuell hinzufügen. Oder Sie können Beziehungen in Ihren Modellen mithilfe von Eloquent's Relationships Builder einrichten.

So ist es etwa so aussehen würde:

$h_id = $handyman->id; 
$s_id = $skill->id; 
DB::table('myJunctionTable')->insert(array('h_id' => $h_id, 's_id' => $s_id)); 

mit Ihrem Code hinzugefügt:

$handyman->first_name = $request->first_name; 
$handyman->last_name = $request->last_name; 
$handyman->street = $request->street; 
$handyman->postcode = $request->postcode; 
$handyman->town = $request->town; 
$handyman->save(); 

$skill = new Skill(); 
$skill->skill = $request->skill; 
$skill->save(); 

$h_id = $handyman->id; 
$s_id = $skill->id; 
DB::table('myJunctionTable')->insert(array('h_id' => $h_id, 's_id' => $s_id)); 

return redirect('addhandyman'); 
Verwandte Themen