【问题标题】:Larave 6 l “Creating default object from empty value”Laravel 6 l “从空值创建默认对象”
【发布时间】:2020-04-15 16:25:29
【问题描述】:

在这里,我有 laravel、vuetify 和 vue 的 setuo CRUD 表。我可以成功地从数据库中创建和读取数据。但是,由于某种原因,我的更新和删除不起作用。我收到如下错误:

{消息:“从空值创建默认对象”,异常:“ErrorException”,...} 异常:“错误异常” 文件:“C:\WinNMP\WWW\chillibiz\app\Sys\Http\Controllers\StageController.php” 线路:53 消息:“从空值创建默认对象” 跟踪:[{文件:“C:\WinNMP\WWW\chillibiz\app\Sys\Http\Controllers\StageController.php”,行:53,…},…]

我的代码在这里:

StageController.php

<?php


namespace App\Sys\Http\Controllers;

use App\Http\Controllers\Controller;

use Illuminate\Http\Request;

use Illuminate\Support\Str;

use App\Sys\Model\Stage;

class StageController extends Controller
{

    public function index(Request $request)
    {  
        $per_page = $request->per_page ? $request->per_page : 5;
        $sort_by = $request->sort_by;
        $order_by = $request->order_by;
        return response()->json(['stages' => Stage::orderBy($sort_by, $order_by)->paginate($per_page)],200);
    }

    public function store(Request $request)
    {
        $uuid = Str::uuid()->toString();
        $stage= Stage::create([
            'id' => $uuid,
            'code' =>$request->code,
            'name' =>$request->name,
            'description' =>$request->description,
        ]);
        return response()->json(['stage'=>$stage],200);
    }


    public function show($id)                                                                                                                                                           
    {
        $stages = Stage::where('code','LIKE', "%$id%")->orWhere('name','LIKE', "%$id%")->orWhere('description', 'LIKE', "%$id%")->paginate();
        return response()->json(['stages' => $stages],200);
    }



    public function update(Request $request, $id)
    {


       $stage = Stage::find($id);


       $stage->code  = $request->code; //line 53
       $stage->name  = $request->name;
       $stage->description  = $request->description;


       $stage->save(); 
       return response()->json(['stage'=>$stage], 200);
    }

    public function destroy($id)
    {
        $stage = Stage::where('id', $id)->delete();
        return  response()->json(['stage'=> $stage],200);
    }



    public function deleteAll(Request $request){
        Stage::whereIn('id', $request->stages)->delete();
        return response()->json(['message', 'Records Deleted Successfully'], 200);
    }
}

Stage.php

<?php

namespace App\Sys\Model;

use Illuminate\Database\Eloquent\Model;

class Stage extends Model
{
    protected $guarded = [];
}

【问题讨论】:

    标签: laravel controller edit


    【解决方案1】:

    我刚刚发现他们使用 uuid 作为 id 而不是递增。这就是为什么你会得到这样的错误:

    要解决您的问题,您需要将字段添加到模型中;

    <?php
    
    namespace App\Sys\Model;
    
    use Illuminate\Database\Eloquent\Model;
    
    class Stage extends Model
    {
        public $incrementing = false;
        protected $keyType = 'string';
        protected $guarded = [];
    
    }
    

    希望这次能解决你的问题。快乐编码。 编辑你可以阅读docs for more info

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-29
      • 2018-07-18
      • 2019-03-14
      • 1970-01-01
      • 2021-05-22
      • 2016-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多