laravel-5 - 当点击提交错误发生时
问题描述
单击提交数据时,数据成功保存并显示在数据库中,但在索引页面中出现错误,我认为没有得到它的用户 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>
这是控制器中的 2 种方法。第一个索引和第二个存储方法
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'));
}
解决方案
由于 Eloquent builder 的 Laravel 5.2 pluck ()方法返回给定列的值集合。当您对该集合调用all()时,您只需从第一列中获取一个值数组。例如,当您调用
$exchanges = Exchange::pluck('exchange','id')->all();
$exchanges将是一个数组,其中包含Exchanges表中exchange列的所有值。因此出现错误,因为您尝试访问此标量值的id属性。
我猜您正在尝试限制从数据库中获取的列数。调用select()方法而不是pluck():
$exchanges = Exchange::select('exchange','id')->get();
推荐阅读
- behat - 如何在 Behat / Mink 中从测试用例/场景中分离数据
- python - 不明白这个“SQL 语句没有足够的参数”错误
- paypal - 如何解释贝宝账单协议的创建?
- html - 如何在 Bootstrap 3 中设置 DIV 的响应高度我的代码附加?
- python - IndentationError: 期望函数上有一个缩进块
- html - Typescript-Button 事件没有被触发
- javascript - 如何以角度将预先生成的数组传递给模板中的组件?
- python - 如何在 django 序列化程序 SlugRelatedField 中获得反向关系
- azure-maps - Azure Maps 路由不提供交通延迟信息
- android - Robolectric 测试抛出 IllegalArgumentException 而没有消息