при нажатии кнопки отправки возникает ошибка

когда вы нажимаете «Отправить данные», данные успешно сохраняются и отображаются в базе данных, но на странице индекса возникает ошибка, я думаю, что не получите идентификатор пользователя

Попытка получить идентификатор свойства не-объекта (вид: 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 метода. 1-й индекс и 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'));
}

person Community    schedule 30.07.2018    source источник
comment
Какую версию Laravel вы используете? Вы отметили 2 разные версии.   -  person jedrzej.kurylo    schedule 30.07.2018


Ответы (1)


Поскольку в Laravel 5.2 метод pluck() построителя Eloquent возвращает набор значений из заданного столбца. Когда вы вызываете all() для этой коллекции, вы просто получаете массив значений из первого столбца. Например, когда вы звоните

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

$exchanges будет массивом, содержащим все значения столбца exchange в вашей таблице Exchanges. Отсюда и ошибка, поскольку вы пытаетесь получить доступ к атрибуту id этого скалярного значения.

Я думаю, вы пытаетесь ограничить количество столбцов, извлекаемых из базы данных. Вызовите метод select() вместо pluck():

$exchanges = Exchange::select('exchange','id')->get();
person jedrzej.kurylo    schedule 30.07.2018