2016-08-16 3 views
0

나는 데이터베이스 Laravel에 새 레코드를 추가하려고 오류 반환 :Laravel 삽입 기록 (외부 키)

SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (kurwa_magazyn . transmits , CONSTRAINT transmits_to_user_id_foreign FOREIGN KEY (to_user_id) REFERENCES users (id)) (SQL: insert into transmits (from_user_id , to_user_id , product_id , quantity , transmit , created_at , updated_at , user_id) values (1, 0, 1, 3, 0, 2016-08-16 18:08:53, 2016-08-16 18:08:53, 1))

$transmit = new transmit($request->all()); 
    $transmit['from_user_id'] = $idKey; 
    $transmit['to_user_id'] = $idKey2; 
    $transmit['product_id'] = $downloadProductsId; 
    $transmit['quantity'] = $downloadIlosc; 
    $transmit['transmit'] = 0; 
    $transmit['created_at'] = $dateNow; 
    $transmit['updated_at'] = $dateNow; 

    Auth::user()->transmits()->save($transmit); 
    //Session::flash('status1', 'Artykuł został dodany poprawnie'); 
    return redirect('warehouse'); 

을하지만 예를 $transmit['to_user_id'] = $idKey2;에 대해 단 하나 개의 값을 추가하려고 할 때 다음 모든 것이 제대로 작동합니다

$transmit = new transmit($request->all()); 
$transmit['to_user_id'] = $idKey2; 
Auth::user()->transmits()->save($transmit); 
return redirect('warehouse'); 

내 파일 모델 transmit.php :

protected $fillable = [ 
    'id', 
    'user_id', 
    'from_user_id', 
    'to_user_id', 
    'product_id', 
    'quantity', 
    'transmit', 
    'created_at', 
    'updated_at', 
]; 
public function user(){ 
    return $this->belongsTo('App\User'); 
} 
public function products(){ 
    return $this->belongsTo('App\Product'); 
} 
012 3,516,

그리고 파일은 새로운 기록 (transferProductUser.php)를 추가 :

<div class="col-xs-4"> 
    {!! Form::model(['method'=>'post','class'=>'form-horizontal','action'=>['[email protected]']]) !!} 


       Produkt: 
       <select class="form-control selectpicker show-tick" data-live-search="true" data-size="5" name="products" id="products" onchange="copy()"> 
        <option selected disabled style="color: orange">Wybierz...</option> 
       @foreach($listProductOfSelectedUser as $listProduct) 
        <option data-subtext="(
        <?php 
        $sn = DB::table('products')->select('sn')->where('id', '=', $listProduct->product_id)->get(); 
        $quantity = DB::table($name_user)->select('quantity')->where('product_id', '=', $listProduct->product_id)->get(); 
        ?> 
        @foreach($sn as $serial) 
         @if($serial->sn == '') 
          <i>~brak SN~</i> 
         @elseif($serial->sn) 
          {{ $serial->sn }} 
         @endif 
        @endforeach 
        @foreach($quantity as $ilosc) 
          ) ilość: <b>{{ $ilosc->quantity }} szt.</b> 
        @endforeach 

        " value="{{ $listProduct->product_id }}"> 

         <?php 
         $article_name = DB::table('products')->select('article_id')->where('id', '=', $listProduct->product_id)->get(); 
         ?> 
         @foreach ($article_name as $name) 
          {{ article::find($name->article_id)->article_name }} 
         @endforeach 

        </option> 
       @endforeach 
       </select> 

       <br /> 

       Do: 
       <select name="stan2" id="stan2" class="form-control selectpicker show-tick" data-size="5" onchange="run2(event)"> 
       <option selected disabled>Wybierz...</option> 
        <optgroup id="użytkownicy" value="użytkownicy" label="użytkownicy"> 
        @foreach($userListName as $user) 
         <option name="użytkownicy" value="{{ $user->id }}">{{ $user->name }}</option> 
        @endforeach 
        </optgroup> 

        <optgroup id="magazyny" value="magazyny" label="magazyny"> 

        @foreach($warehouseList as $warehouse) 
         <option name="magazyny" value="{{ $warehouse->id }}">{{ $warehouse->name_warehouse }}</option> 
        @endforeach 
        </optgroup> 
       </select> 



       <div class="checkbox"> 
       <label> 
        <input type="checkbox" id="isAgeSelected"> Podaj ilość produktów do przeniesienia. 
       </label> 
       </div> 

      <input type="number" class='form-control', id="txtAge" name="count" id="txtAge" style="display:none" min='0', max="", placeholder='Podaj ilość produktow do przeniesienia...'> 



      <br /> 

      {!! Form::text('stan_key', 'user,'.$userId, ['class' => 'form-control', 'id'=>'copy']) !!} 
      {!! Form::text('stan_key2', null, ['class' => 'form-control', 'id'=>'copy3']) !!} 
      {!! Form::text('idProduct', null, ['class' => 'form-control', 'id'=>'copy2']) !!} 

      {!! Form::submit('Tak, przenieś', ['class' => 'btn btn-primary']) !!} 
      {!! link_to('warehouse', $title = 'Anuluj', ['class' => 'btn btn-danger']) !!} 

    {!! Form::close() !!} 

</div> 


<script> 

function run2(event) { 
console.log(document.getElementById("użytkownicy").label); 
var $id = document.getElementById("stan2").value; 
var lable=event.target.options[event.target.selectedIndex].parentNode.label 

    if(lable == 'użytkownicy'){ 

     document.getElementById("copy3").value = "user,"+$id; 

    } else if (lable == 'magazyny') { 

     document.getElementById("copy3").value = "warehouse,"+$id; 
    } 

} 


document.getElementById('products').onchange = function() { 
    document.getElementById('copy2').value = event.target.value 
} 


//wyswietlenie inputa z quantity 
$('#isAgeSelected').click(function() { 
    $("#txtAge").toggle(this.checked); 
}); 

</script> 

왜 한 번에 모든 값을 추가 할 수 없습니다?

+0

[Laravel 5 : 무결성 제약 조건 위반 : 1452 자식 행을 추가하거나 업데이트 할 수 없음 : 외래 키 제약 조건이 실패 할 수 있습니다] (http://stackoverflow.com/questions/29189311/laravel-5-integrity-constraint- violation-1452-can-add-or-update-a-child-row) – Sachith

+0

나는 이것이 당신을 도울 것을 희망한다. http://stackoverflow.com/questions/29189311/laravel-5-integrity-constraint-violation-1452-cannot-add-or-update-a-childrow – Sachith

답변

0

는 null 또는

당신이 null 값을 설정하는 가능성을 원한다면 0,이 열 Null 허용을해야 포함 당신이

$transmit['to_user_id'] = $idKey2; 

을 $ idKey하려고하는 경우처럼 보인다.