2017-09-15 7 views
0

私はLaravelを新しくしました。自分のフォームから選択したアイテムとユーザーのIDがあるかどうか確認したい。これらのフィールドは両方ともitem_assignmentsテーブルにあります。 IDが見つからない場合は常に、新しい割り当てが作成され、item_assignmentsテーブルに格納されます。これは動作しますが、IDが見つかった場合は、入力されたカウントをインクリメントして既存のIDを更新する必要があります。Laravel - 選択したアイテムの行IDを取得

ここは私の見解です。あなたはすでにあなただけの検索を使用するのではなく、その1を更新することができるはずですASSIGN1 ItemAssignのインスタンスは$を中に保存されている場合は

 <form class="form-horizontal" method="post" action="{{url('item/assign')}}" enctype="multipart/form-data"> 
      <input type="hidden" name="_token" value="{{ csrf_token() }}" > 

      <legend>Assign Item</legend> 

      <fieldset> 

       <input id="eid" name="id" type="hidden"> 

       <!-- Text input--> 
       <div class="form-group"> 
        <label class="col-md-4 control-label" for="name">Item Name:</label> 
        <div class="col-md-6"> 
         <input id="ename" name="name" type="text" class="form-control input-md" readonly> 

        </div> 
       </div> 

       <!-- Select Basic --> 
        <div class="form-group{{ $errors->has('user') ? ' has-error' : '' }}"> 
        <label class="col-md-4 control-label" for="user">Assign to:</label> 
        <div class="col-md-6"> 
         <select id="user" name="user" class="form-control"> 
          <option value="0">Select a User</option> 
          @foreach($users as $user) 
          <option value="{{$user->id}}">{{$user->name}}</option> 
          @endforeach 
         </select> 
          @if ($errors->has('user')) 
           <span class="help-block"> 
            <strong>{{ $errors->first('user') }}</strong> 
           </span> 
          @endif 

        </div> 
       </div> 


       <!-- Text input--> 
        <div class="form-group{{ $errors->has('count') ? ' has-error' : '' }}"> 
        <label class="col-md-4 control-label" for="count">Item Count:</label> 
        <div class="col-md-6"> 
         <input id="count" name="count" type="text" placeholder="Enter Item Count" class="form-control input-md"> 
          @if ($errors->has('count')) 
           <span class="help-block"> 
            <strong>{{ $errors->first('count') }}</strong> 
           </span> 
          @endif 

        </div> 
       </div> 

       <!-- Button (Double) --> 
       <div class="form-group"> 
        <label class="col-md-5 control-label" for="submit"></label> 
        <div class="col-md-7"> 
         <button id="submit" name="submit" class="btn btn-success">Assign</button> 
        </div> 
       </div> 
     </form> 

は、これは私のコントローラ

// checks the ID of the selected item 
    $assign1 = ItemAssign::where("item_id", $req->id)->where('user_id', $req->user)->first(); 

    // this works 
    if (!($assign1)) { 
     $assign = new ItemAssign(); 
     $assign->user_id = $req->user; 
     $assign->item_id = $req->id; 
     $assign->item_count = $req->count; 
     $assign->balance = $req->count; 
     $assign->save(); 
    } 
    // this is what I want to work 
    else { 
     $assign = ItemAssign::find($assign1); 
     $assign->item_count += $req->count; 
     $assign->balance += $req->count; 
     $assign->save(); 
    } 
    // stores to user table 
    $user = User::find($req->user); 
    $user->received += $req->count; 
    $user->save(); 

    // stores to item table 
    $item = Item::find($req->id); 
    $count = $item->item_count; 
    $item->assigned_count += $req->count; 
    $item->remaining = $count - $item->assigned_count; 
    $item->save(); 
    return redirect('assignment'); 

答えて

1

です。

IE:

else { 
    $assign1->item_count += $req->count; 
    $assign1->balance += $req->count; 
    $assign1->update(); 
} 
0
else { 
     $assign = ItemAssign::find($assign1); 
     $assign->item_count += $req->count; 
     $assign->balance += $req->count; 
     $assign->update(); 
    } 
+0

それはそこにプロパティが[ITEM_COUNT]このコレクションのインスタンスに存在しないと言います。 –

+0

use print_r( '$ assign'); exit;それはitem_countを表示していますか? – RamAnji

+0

それは働いた!取得する値が多すぎます。 ItemAssign :: find($ assign1)を$ assign1に変更しました。どうもありがとう! –

関連する問題