我对这个错误很困惑,因为这是我第一次在后端主题中,我们的讲师没有在他提供的视频中包含 CRUD 操作,所以我决定自己发现,然后我在 POST 上想到了这个错误操作
HTTP - 控制器 - 用户控制器 PHP
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
Class UserController extends Controller {
private $request;
public function __construct(Request $request){
$this->request = $request;
}
public function getUsers(){
$users = User::all();
return response()->json($users, 200);
}
public function add(Request $request ){
$rules = [
'first_name' => 'required|max:20',
'last_name' => 'required|max:20',
// 'gender' => 'required|in:Male,Female',
];
$this->validate($request,$rules);
$user = User::create($request->all());
return $this->successResponse($user,
Response::HTTP_CREATED);
}
}
模型 - 用户 PHP
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model{
public $timestamps = false;
protected $table = 'students';
// column sa table
protected $fillable = [
'first_name', 'last_name'
];
}
路线 - 网页 PHP
<?php
/** @var \Laravel\Lumen\Routing\Router $router */
/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It is a breeze. Simply tell Lumen the URIs it should respond to
| and give it the Closure to call when that URI is requested.
|
*/
$router->get('/', function () use ($router) {
return $router->app->version();
});
$router->get('/users',['uses' => 'UserController@getUsers']);
$router->post('/postUsers', 'UserController@add'); // create new user record
这一切都很好我无法确定错误发生的位置或者我有什么遗漏
我只想在邮递员中运行 POST 以在列上添加数据,因为我认为 POST 正在更新数据库
所以这是我要添加的数据
{
"first_name": "Lorem",
"last_name": "Ipsum"
}
在父控制器的 userController 中你有这个方法吗?
successResponse
如果不注册这个方法你会得到异常
我假设您正在尝试使用特征来格式化响应。如我错了请纠正我。如果是这样,那么您调用了 trait 函数而没有首先导入该类。然后通过使用关键字导入类。
所以一般流程如下,如果你像我假设的那样使用特征,你可以进行调整。
use App\Traits\TraitName;
class YourController extends Controller {
use TraitName;
public function foo(){
$this->TritName($parms);
}
}
而且你不需要手动在构造函数中输入提示,因此 laravel 服务容器会自动解析整个应用程序的请求。