点击发生提交错误时

时间:2018-07-30 08:56:40

标签: laravel-5 laravel-5.2 laravel-5.1

当单击提交数据时,数据成功保存并显示在数据库中,但在索引页中出现错误,我认为没有得到用户ID

  

试图获取非对象的属性“ id”(查看:   C:\ xampp \ htdocs \ ytl \ resources \ views \ profile \ index.blade.php)

这是index.blade.php文件

<form method="post", id="form", action="{{action('Profile\UserProfileController@index')}}" accept-charset="UTF-8">
            {{ csrf_field() }}


            <div class="row">

                <div class="col-md-6 mb-3 form-group">
                Exchange:<select name="exchange_id" id="exchange" class="form-control " onchange="myfunc()">
                <option value="">Select</option>
                @foreach($exchanges as  $key=>$val )
                    <option value="{{ $val->id }}">{{  $val->exchange }}</option>
                @endforeach
                 </select>

                    {{--{!! Form::label('exchange_id', 'Exchanges: ') !!}--}}
                    {{--{!! Form::select('exchange_id', ['' => 'Choose Options'] + $exchanges, null, ['class' => 'form-control', 'id' => 'exchange', 'name' => 'exchange_id'])!!}--}}
                </div>
                <div class="col-md-6 mb-3 form-group">
                Market<select name="market_id" id="market" class="form-control bindselect" >
                <option value="">Select</option>
                {{--@foreach($markets as  $key=>$val )--}}
                {{--<option value="{{ $val->id }}">{{  $val->market }}</option>--}}
                {{--@endforeach--}}
                </select>
                </div>
                <div class="col-md-6 mb-3 form-group">
                    Country:<select name="country_id" id="country" class="form-control " >
                        <option value="">Select</option>
                        @foreach($countries as  $key=>$val )
                        <option value="{{ $val->id }}">{{  $val->country }}</option>
                        @endforeach
                    </select>
                </div>

            <div class="col-md-6 mb-3 form-group">
                Company:<select name="brokerage_company_id" id="brokerage_company_id" class="form-control " >
                    <option value="">Select</option>
                    @foreach($brokerage_company as  $key=>$val )
                    <option value="{{ $val->id }}">{{  $val->brokerage_company }}</option>
                    @endforeach
                </select>
            </div>


            <div class="col-md-6 mb-3 form-group">
                {{--{!! Form::label('Intraday_Charge', 'Intraday Charge:') !!}--}}
                {{--{!! Form::text('Intraday_Charge', null, ['required' => 'required', 'class'=>'form-control number_only'])!!}--}}
                Intraday_charge: <input type="text" name="charge_intraday" class="form-control"><br>

            </div>
            <div class="col-md-6 mb-3 form-group">
                  Delivery_charge: <input type="text" name="charge_delivery" class="form-control"><br>
            </div>
            <div class="col-md-6 mb-3 form-group">
                Delivery_charge: <input type="text" name="charge_per_lot" class="form-control"><br>
            </div>
            <div class="col-md-6 mb-3 form-group">
                Delivery_charge: <input type="text" name="charge_per_order" class="form-control"><br>
            </div>
            <div class="mb-3 form-group">
                {{--{!! Form::submit('Add trade', ['class'=>'btn btn-success btn-lg']) !!}--}}
                <input type="submit" value="Submit">

            </div>
        </div>
        </form>

这是其中两种方法的控制器。第一索引和第二存储方法

public function index(Request $request){
        $exchanges = Exchange::select('exchange','id')->get();
        $markets = Market::select('market','id')->get();
        $countries = Country::select('country','id')->get();
        $brokerage_company = BrokerageCompany::select('brokerage_company','id')->get();
        return view('profile.index', compact( 'exchanges','markets','countries','brokerage_company'));
    }


public function store(Request $request){

    $Input = $request->all();
    $user = Auth::user();
    $user->userprofile()->create($Input);
    $user_id = Auth::user()->id;

    $exchanges = Exchange::pluck('exchange','id')->all();
    $markets = Market::pluck('market','id')->all();
    $countries = Country::pluck('country','id')->all();
    $brokerage = BrokerageCompany::pluck('brokerage_company','id')->all();
    $user_profile = UserProfile::pluck('charge_intraday','charge_delivery','charge_per_lot','charge_per_order');

    return view('profile.index', compact( 'exchanges','markets','countries','brokerage','user_profile'));
}

1 个答案:

答案 0 :(得分:0)

从Laravel 5.2开始,Eloquent构建器的 pluck()方法从给定列返回值的集合。在此集合上调用 all()时,您只需从第一列中获取一个值数组。例如,当您致电

$exchanges = Exchange::pluck('exchange','id')->all();

$ exchanges 是一个数组,其中包含 Exchanges 表中所有 exchange 列的值。因此,当您尝试访问此标量值的 id 属性时,会出现错误。

我猜您正在尝试限制从数据库中获取的列数。调用 select()方法,而不是 pluck()

$exchanges = Exchange::select('exchange','id')->get();
相关问题