Обновите только значение одного поля в контроллере в Laravel 6 - PullRequest
0 голосов
/ 24 февраля 2020

Мой проект требует, чтобы администратор одобрил элемент, загруженный пользователем, для того, чтобы этот элемент был виден на веб-сайте как своего рода проверка или что-то вроде того, чтобы держать все под контролем. поэтому в таблице Item у меня есть поле с именем (status) и значением по умолчанию = (запрещено).

$table->enum('status',['available','denied'])->default('denied');

Администратор видит все элементы, и мне нужна кнопка рядом чтобы каждый элемент называется утверждать, если администратор щелкает по нему изменение состояния с отклоненного на утвержденное, как я могу создать в контроллере функцию, которая изменяет только поле состояния? одна, кроме функции редактирования и обновления по умолчанию, которая уже работает в моем контроллере.

public function edit($itemid)
{
    $where = array('itemid' => $itemid);
    $data['item_info'] = Item::where($where)->first();

    return view('items.edititem', $data);
}

public function update(Request $request, $itemid)
{
    $request->validate([
        'name' => 'required',
        'description' => 'required',
        'state' => 'required',
        'price' => 'required',
        'charityfee' => 'required',
        'status' => 'required',
        'category' => 'required',
    ]);

    $update = [
        'name' => $request->name, 'description' => $request->description,
        'state' => $request->state, 'price' => $request->price,
        'charityfee' => $request->charityfee, 'status' => $request->status,
        'category' => $request->category, 'itemphoto' => $request->itemphoto
    ];
    Item::where('itemid', $itemid)->update($update);

    return Redirect::to('profile')
        ->with('success', 'Great! item updated successfully');
}

Несмотря на то, что я попробовал этот следующий код, возникла ошибка, что вызванная мною функция не определена: (

public function editstatus($itemid)
        {
          Item::where('itemid', $itemid)->update(array('itemid' => 'available'));

        } 

функция в контроллере

<td><a href="{{ route('items.editstatus',$item->itemid)}}" class="btn btn-primary">approve</a></td>

код в представлении

Ответы [ 2 ]

0 голосов
/ 25 февраля 2020

Я почти уверен, что ваша переменная $ where неверна. Вы хотите сравнить переменную с полем, просто избавьтесь от '=>'. Вы в основном выполняете операцию присвоения, а не сравнение.

Вы можете сделать это таким образом

$data['item_info'] = Item::where($itemid, 'item_id')->first();
0 голосов
/ 25 февраля 2020

Ваша проблема связана с функцией editstatus. Вы хотите обновить status => 'available' , но вы обновляете код itemid => 'available' . вот почему это ошибка.

ваш код должен измениться ниже:

public function editstatus($itemid)
{
    Item::where('itemid', $itemid)->update(array('status' => 'available'));
} 
...