传递给Illuminate \ Database \ Eloquent \ Builder :: create()的参数1必须是数组类型,给出null

时间:2017-12-14 06:20:06

标签: laravel post login routes

我正在使用laravel 5.4, 我需要为' createUser'。

打开一个端点

" LoginController.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']);

&#34; user.php的&#34;

<?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',
    ];
}

&#34;邮差详情&#34; enter image description here

get&#34;用户&#34;端点正在工作! 但当我试图打电话给&#34;帖子&#34;请求使用邮递员,它显示错误

&#34;传递给Illuminate \ Database \ Eloquent \ Builder :: create()的参数1必须是数组类型,给定null,在C:\ xamppnew \ htdocs \ blog \ vendor \ laravel \ framework \中调用第1374行的src \ Illuminate \ Database \ Eloquent \ Model.php并定义了&#34;

任何建议!

1 个答案:

答案 0 :(得分:0)

此设置对我有用。你可以发布你的整个堆栈跟踪吗?我或许能够提供更具体的帮助。

api.php

Route::post('users', ['as' => 'createUser', 'uses' => 'Auth\AuthController@createUser']);

user.php的

<?php

namespace App;

class User extends \Illuminate\Foundation\Auth\User
{

}

LoginController.php

public function createUser(Request $request)
{
    $this->validate($request, [
        'email'    => 'unique:users|email|required',
        'name'     => 'unique:users|required',
        'position' => 'required',
    ]);

    $user = new User();
    $user->name = $request['name'];
    $user->email = $request['email'];
    $user->position = $request['position'];
    $user->password = hash('sha512', $request['password']);
    $user->save();

    return response('', 201);
}

测试\特征\ UserTest.php

<?php

namespace Tests\Feature;

use Tests\TestCase;
use Illuminate\Foundation\Testing\WithoutMiddleware;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Illuminate\Foundation\Testing\DatabaseTransactions;

class UserTest extends TestCase
{
    /** @test */
    public function it_can_create_a_user()
    {
        $response = $this->post('/users', [
            'email'    => 'user' . rand(0, 99999999) . '@gmail.com',
            'name'     => 'Billy ' . rand(0, 99999999) . ' Joel',
            'position' => 'Musician',
        ], ['Accept' => 'application/json']);

        $response->assertStatus(201);
    }
}