Laravel 6 l “从空值创建默认对象”
Larave 6 l “Creating default object from empty value”
在这里,我设置了 CRUD table 与 laravel、vuetify 和 vue 。我可以成功地从数据库中创建和读取数据。但是,由于某种原因,我的更新和删除不起作用。我收到如下错误:
{消息:"Creating default object from empty value",异常:"ErrorException",…}
异常:"ErrorException"
文件:"C:\WinNMP\WWW\chillibiz\app\Sys\Http\Controllers\StageController.php"
行:53
消息:"Creating default object from empty value"
跟踪:[{文件:"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 = [];
}
我刚刚发现他们使用 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
在这里,我设置了 CRUD table 与 laravel、vuetify 和 vue 。我可以成功地从数据库中创建和读取数据。但是,由于某种原因,我的更新和删除不起作用。我收到如下错误:
{消息:"Creating default object from empty value",异常:"ErrorException",…} 异常:"ErrorException" 文件:"C:\WinNMP\WWW\chillibiz\app\Sys\Http\Controllers\StageController.php" 行:53 消息:"Creating default object from empty value" 跟踪:[{文件:"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 = [];
}
我刚刚发现他们使用 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