【发布时间】:2018-05-28 04:04:46
【问题描述】:
我使用的是 laravel 5.4, 我需要为“createUser”打开一个端点。
“登录控制器.php”
public function createUser(Request $request)
{
$data=$request->only('email','name','position');
$validate=Validator::make($data, [
'email' => 'required|email|unique:users',
'name' => 'required',
'position' => 'required',
]);
$exUser=User::where('email','=',$request['email'])->first();
$nameUser=User::where('name','=',$request['name'])->first();
if(empty($exUser))
{
if(empty($nameUser))
{
$user=new User();
$user->name=$request['name'];
$user->email=$request['email'];
$user->position=$request['position'];
$user->password=hash('sha512',$request['password']);
$user->save();
}
else
{
return response()->json(['Name Has Already Taken'],500);
}
}
else
{
return response()->json(['Email Has Already Taken'],500);
}
}
“RegisterController.php”
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'position' => $data['position'],
'password' => bcrypt($data['password'])
]);
}
“api.php”
<?php
use App\User;
use Illuminate\Http\Request;
Route::get('users',['as' => 'user', 'uses'
=>'Auth\LoginController@getUsers']);
Route::post('users', ['as' => 'createUser', 'uses' =>
'Auth\LoginController@createUser']);
“用户.php”
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use Notifiable;
protected $fillable = [
'name', 'email', 'position' ,'password'
];
protected $hidden = [
'password', 'remember_token',
];
}
获取“用户”端点正在工作! 但是当我尝试使用邮递员调用“发布”请求时,它会显示错误
"传递给 Illuminate\Database\Eloquent\Builder::create() 的参数 1 必须是数组类型,给定 null,在 C:\xamppnew\htdocs\blog\vendor\laravel\framework\src\Illuminate 中调用\Database\Eloquent\Model.php 在第 1374 行并已定义“
任何建议!
【问题讨论】:
-
我认为您需要共享用户模型。
-
还有邮递员的详细信息?
-
添加了用户模型和邮递员详细信息。请检查!
-
首先你为什么用
logincontroller作为registercontroller?那你为什么不在你的createUser方法中使用User::create([...])呢? -
我实际上是 laravel 的新手!当我将端点写为“Route::post('users', 'RegisterController@create');”时, 也会报同样的错误