【问题标题】:Error message: Creating default object from empty value错误消息:从空值创建默认对象
【发布时间】:2021-02-22 04:30:39
【问题描述】:

面对此错误消息但不确定它有什么问题?在 StackOverflow 和其他论坛上尝试了解决方案,但也没有用。

错误在 $review->title=$request->title;

    public function updateReview(Request $request)
    {
    // dd($request->all());

    $review = Review::find($request->id);
    $review->id=$request->id;
    $review->title=$request->title;
    $review->review=$request->review;
    $review->rating=$request->rating;

    $review->save(); 

    return redirect('/');
    
    }

A dd($request->all());返回以下内容:

array:5 [▼
  "id" => "3"
  "title" => "User 3 has updated title"
  "review" => "User 4 just updated review"
  "rating" => "5"
  "_token" => "pGFVAzHNg7HmXbkMXylxcM6biqaGnwFmsxjsrTgl"
]

这些是我的路线:

Route::get('/edit_review/{id}', 'App\Http\Controllers\UserController@editReview');
Route::post('/update', 'App\Http\Controllers\UserController@updateReview')->middleware('user');

【问题讨论】:

  • dd($request->all()); 的输出是什么?
  • array:4 [▼ "title" => "这是更新的标题" "review" => "我正在更新评论" "rating" => "5" "_token" => “Dyjm8Tis2MhpMsjKUkMI8Tfxv3rC6DK2OobMwmK7”]
  • 请将代码发布为带有适当标记的文本而不是图像。
  • 错误不是关于 $request 包含什么,而是关于 $review 首先不是一个对象 - stackoverflow.com/questions/8900701/…
  • 我已经发布了有关该错误的答案,因为 $request->id 返回 null。如果您看到dd($request->all()); 输出,则输出上没有任何id。所以没有$request->id

标签: php laravel


【解决方案1】:

您收到此错误Warning: Creating default object from empty value,因为$review->title 返回false

find() 接受一个 id 并返回一个模型。如果不存在匹配的模型,则返回null

你可以用findOrFail()代替find(),如果记录不匹配那么findOrFail()会抛出404错误:

$review = Review::findOrFail($request->id);

我认为你错过了在你的函数上定义一个参数,它与你的路由一起传递,可能是它的{id}

public function updateReview(Request $request, $id)
{  
    $review = Review::findOrFail($id); 
    //... 
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-15
    • 2016-10-11
    • 1970-01-01
    • 2017-01-22
    • 1970-01-01
    • 2023-03-11
    • 2013-06-19
    相关资源
    最近更新 更多