2016-04-18 2 views
0

Проблема проста У меня есть форма, которая вставляет данные в таблицу Handymen (все, кроме флажков) и в таблицу Skill (флажки), однако они подключаются с помощью таблицы соединений и когда я нажимаю кнопку отправки, данные добавляется к обеим таблицам, но как я могу обновить таблицу соединений, чтобы добавить новую строку, добавив только что добавленные навыки skill_id и handyman_id?Обновление таблицы переходов с использованием 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 

Если требуется какой-либо другие файлы/код, пожалуйста, дайте мне знать. Нужна помощь плохо! Благодаря!

+0

Не было больше смысла использовать многие-ко-многим здесь? Вы не хотите, чтобы у вас было много навыков «Карпентера»? Вы просто хотите связать мастера с умением «Карпентер». – Robert

ответ

1

Охлаждающая вещь о Laravel Models (Eloquent), когда вы создаете новый ресурс/модель, она фактически вытаскивает вновь созданный идентификатор первичного ключа из вашего нового ресурса в вашей базе данных в вашу модель.

Так что, когда вы делаете:

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

Так ручным способом было бы извлечь отдельные идентификаторы из моделей, а затем добавить их в таблицу вручную. Или вы можете настроить отношения в своих моделях, используя Eloquent's Relationships Builder.

Так это будет выглядеть примерно так:

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

С код добавлен:

$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'); 
Смежные вопросы