Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Laravel 5.8中编辑和更新函数_Php_Laravel_Laravel 5.8 - Fatal编程技术网

Php 在Laravel 5.8中编辑和更新函数

Php 在Laravel 5.8中编辑和更新函数,php,laravel,laravel-5.8,Php,Laravel,Laravel 5.8,我得到一个错误,它说 “此集合实例上不存在属性[id]。(视图:C:\newXampp\htdocs\testUser\resources\views\Stock\edit.blade.php)” 这是我的控制器 public function editStock(Stock $id) { // $Stock = Stock::find($id); return view('Stock.edit', compact('Stock', 'id

我得到一个错误,它说 “此集合实例上不存在属性[id]。(视图:C:\newXampp\htdocs\testUser\resources\views\Stock\edit.blade.php)”

这是我的控制器

public function editStock(Stock $id)
    {
        //
        $Stock = Stock::find($id);
        return view('Stock.edit', compact('Stock', 'id'));
        // return response($stock);

    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \App\Stock  $stock
     * @return \Illuminate\Http\Response
     */
    public function updateStock(Request $request, $id)
    {
        $request->validate([
            'id'=>'required',
            'stock_name'=>'required',
            'stock_qty'=>'required',
            'stock_unit'=>'required',
            'stock_price_per_kg'=>'required',
            'stock_weight_per_qty'=>'required'
        ]);

        $stock = Stock::find($id);
        $stock->stock_name =  $request->get('stock_name');
        $stock->stock_qty = $request->get('stock_qty');
        $stock->stock_unit = $request->get('stock_unit');
        $stock->stock_price_per_kg = $request->get('stock_price_per_kg');
        $stock->stock_weight_per_qty = $request->get('stock_weight_per_qty');
        $stock->save();

        return redirect('/Stock/index/')->with('success', 'Stock updated!');

    }
这是我的路线

//Route for Stock
Route::get('/Stock/createStock/', 'ChicController@createStock')->name('createStock');
Route::post('/Stock/createStock/', 'ChicController@storeStock')->name('storeStock');
Route::get('/Stock/index/', 'ChicController@indexStock')->name('indexStock');
Route::get('/Stock/edit/{id}', 'ChicController@editStock')->name('editStock');
Route::post('/Stock/edit/{id}', 'ChicController@updateStock')->name('updateStock');
Route::delete('/Stock/index/{id}', 'ChicController@destroyStock')->name('deleteStock');
这是我的edit.blade.php

@extends('layouts.app')

@section('content')
<div class="row">
    <div class="col-sm-8 offset-sm-2">
        <h1 class="display-3">Update a Stock</h1>

        @if ($errors->any())
        <div class="alert alert-danger">
            <ul>
                @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
                @endforeach
            </ul>
        </div>
        <br /> 
        @endif
        <form method="post" action="{{ route('updateStock', $Stock->id) }}">
            {{ csrf_field() }}
            <div class="form-group">

                <label for="stock_name">Stock Name:</label>
                <input type="text" class="form-control" name="stock_name" value={{$Stock->stock_name }} />
            </div>

            <div class="form-group">
                <label for="stock_qty">Stock Amount:</label>
                <input type="number" class="form-control" name="stock_qty" value={{$Stock->stock_qty }} />
            </div>

            <div class="form-group">
                <label for="stock_unit">Stock Unit:</label>
                <select id="stock_unit" name="stock_unit" value={{$Stock->stock_unit}}>
                    <option value="Kg">Kg</option>
                    <option value="Qty">Qty</option>
                </select>
            </div>

            <div class="form-group">
                <label for="stock_price_per_kg">Price Per Kg:</label>
                <input type="number" class="form-control" name="stock_price_per_kg" value={{$Stock->stock_price_per_kg }} />
            </div>
            <div class="form-group">
                <label for="stock_weight_per_qty">Weight Per Qty:</label>
                <input type="number" class="form-control" name="stock_weight_per_qty" value={{$Stock->stock_weight_per_qty }} />
            </div>
            <button type="submit" class="btn btn-primary">Update</button>
        </form>
    </div>
</div>
@endsection
@extends('layouts.app'))
@节(“内容”)
更新股票
@如果($errors->any())
    @foreach($errors->all()作为$error)
  • {{$error}}
  • @endforeach

@恩迪夫 {{csrf_field()}} 股票名称: 股票名称}}/> 库存量: 库存量}}/> 存货单位: 库存单位}}> 公斤 数量 每公斤价格: 库存价格每公斤}/> 每件重量: 库存(重量)每(数量)}/> 更新 @端部

我什么都试过了,但解决不了这个问题。当我尝试在编辑控制器中回显$id时,它会显示正确的$id。因此,我不知道如何解决此问题,我也不知道为什么会发生这种情况。

对于您的
editStock
方法,由于正在进行隐式路由模型绑定,您已经从路由参数接收到一个与
id
匹配的
Stock
模型实例。当您将该
$id
变量传递给
Stock::find($id)
时,您传递的是一个
可排列的模型。这会导致
find
变成
findMany
认为您正在传递许多ID。您最终会得到一个集合,因为:

public function editStock(Stock $id)
{
    $Stock = Stock::find($id);
    return view('Stock.edit', compact('Stock', 'id'));
}
$Stock
是一个集合,因为它向
find
传递了许多。我会调整它,只将
$id
变量传递给您想要的
股票的视图

public function editStock(Stock $id)
{
    return view('Stock.edit', [
        'Stock' => $id,
    ]);
}
您的视图现在将有一个
Stock
变量,它是您想要的
Stock


错误表明编辑视图中的
$Stock
是集合对象,而不是模型。你的控制器代码和你现在的一样吗?在查看之前,您是否尝试过在控制器中执行
dd($Stock)
?@AkenRoberts是的,我的控制器与我发布的控制器完全相同。我将在哪里添加此dd($Stock)?