Laravel — Получить идентификатор строки выбранного предмета

Я новичок в Laravel. Я хочу проверить, есть ли в моей форме идентификатор выбранного элемента и пользователя. Оба эти поля находятся в моей таблице item_assignments. Всякий раз, когда идентификатор не найден, он создает новое назначение и сохраняет его в таблице item_assignments. Это работает, но когда найден идентификатор, он должен обновить существующий, увеличивая введенное количество.

Вот мой взгляд.

        <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');

0

Решение

Если у вас уже есть экземпляр ItemAssign, хранящийся в $ assign1, вы можете просто обновить его вместо использования find.

IE:

else {
$assign1->item_count += $req->count;
$assign1->balance += $req->count;
$assign1->update();
}
1

Другие решения

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

По вопросам рекламы [email protected]