【问题标题】:Trying to get property of non-object laravel when accessing database访问数据库时尝试获取非对象laravel的属性
【发布时间】:2017-11-30 09:15:55
【问题描述】:

我正在尝试为 laravel 编写编辑路径,但由于某种原因不断收到错误“尝试获取非对象 laravel 的属性”。 Create 控制器工作正常,但是当我使用 controller@update 路由时,我不断收到此错误

用于添加事件的我的控制器:(更新)

public function update(Request $request, $id)
    {
         //create event
         $my_user = my::find($id);
         $my_user->programme = $request->input('programme');
         $my_user->goal1 = $request->input('goal1');
         $my_user->goal2 = $request->input('goal2');
         $my_user->goal3 = $request->input('goal3');
         $my_user->goal4 = $request->input('goal4');
         $my_user->goal5 = $request->input('goal5');
         $my_user->user_id = auth()->user()->id;

         $my_user->save();

         return redirect('/home')->with('success','Event Created');
    }

编辑页面

@extends('layouts.app')

@section('content')
<div class="container">
    <h1>Edit Post</h1>
    {!! Form::open(['action' => ['myUserController@update', $my_user], 'method' => 'POST']) !!}
        <div class="form-group">
            {{Form::label('title', 'Event Name')}}
            {{Form::text('goal1', $my_user->goal1, ['class' => 'form-control', 'placeholder' => 'Goal One'])}}

        </div>
        {{Form::hidden('_method','PUT')}}
        {{Form::submit('Submit', ['class'=>'btn btn-primary'])}}
    {!! Form::close() !!}

</div>
@endsection

【问题讨论】:

  • 验证您确实在 $my_user = my::find($id); 中检索用户你可以试试 my::findOrFail($id);看看有没有什么东西出来。
  • 您没有将$my_user 变量返回到您的视图中,这就是您的问题的原因。
  • $my_user = my::find($id); 之后 dd($my_user) 的输出是什么? ???
  • @joem 那么你没有从你的查询中得到任何东西。使用 dd($id) 查看您的 $id 是否正确传入。如果不是,这可能是您如何定义路由名称的路由问题。
  • @joe m 你能更新你的问题并在控制器文件中提供你的 get 和 post 方法的完整实现吗??

标签: php sql laravel


【解决方案1】:

鉴于您使用的是 Route::resource,您可以通过编写类似的内容来键入提示您的参数

public function update(Request $request, MyUser $myuser){
    // The $myuser parameter comes from the Route::resource and can be verified using php artisan route:list in your terminal

    // edit $my_user
    $my_user->save();

    return redirect('/home')->with('success','Event Created');
}

查看表单的 LaravelCollective 文档后更新

感谢Sohel0415 提到您不需要调用 $my_user->id 来提供带有 Form 门面的路由参数。

【讨论】:

  • 在这种情况下使用 $my_user 是正确的,而不是 $my_user->id
【解决方案2】:

你可以在你的代码上使用这个方法:

{{ Form::open(array('url'=>'admin/users/store' , 'method' =>'POST')) }}

你的路由通过这个方法在 web.php 文件中定义:

Route::post('users/store', 'admin\UserController@store');

【讨论】:

    猜你喜欢
    • 2018-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多