2017-05-29 138 views
1

我尝试使用User::create[]方法创建新用户时出现问题。Laravel ::创建方法

我读Laravel create method这个问题,但它并不能帮助我:

下面是我的用户模型:

<?php 
namespace App; 
use Illuminate\Notifications\Notifiable; 
use Illuminate\Foundation\Auth\User as Authenticatable; 

class User extends Authenticatable 
{ 
    use Notifiable; 
    protected $fillable = [ 
     'name', 'email', 'password','phone','rating' 
    ]; 
    protected $hidden = [ 
     'password', 'remember_token', 
    ]; 
} 

在这里,我的控制器代码:

public function create() { 
    $input = Request::all(); 
    User::create[$input]; 
    return $input; 
} 

PhpShtorm显示我此通知:

不断创建未找到...

我该如何解决这个问题,并创建新的用户?

+2

'用户::创建($输入);'创建不是数组它是一种方法。 –

+0

http://i.imgur.com/b7cGcKo。png –

+0

@HakanSONMEZ请在回答中加上你提到的,因为它正确回答。 –

回答

2

您正在尝试访问create作为数组,它是一种方法,如下所示:create()。更改下面的代码中的方括号。

您的IDE可能无法识别该方法,因为它是使用magic methods调用的。如果您想正确识别该方法,请使用laravel-ide-helper

public function create() { 
    $input = Request::all(); 
    User::create($input); // <-- Change this 
    return $input; 
} 
+0

http://i.imgur.com/wWy8U19.png现在找不到方法 –

+0

@ДимаСвободинIDE无法找到它,因为它使用'magic methods'调用,但它可以工作。 –

0

这句法的外观与名称bar恒定在Foo类。

Foo::bar 

如果酒吧是一个方法,...你需要用parenthesys

Foo::bar() 

调用它。如果你写美孚::酒吧[ '富'];你希望找到像

class Foo 
{ 
    const bar = ['foo' => 'bar']; 
} 

恒定我不认为这是正确的语法

你同样可以在应用命名空间。存在App \ User类吗?和App \ User类有一个方法'创建'?

即使代码完美运行,IDE也会显示错误。

+0

http://i.imgur.com/wWy8U19.png –

+0

是IDE问题:请检查代码是否适用于您的浏览器。有时IDE不识别代码。 – sensorario

1

您需要拨打create()。假设您想要返回创建的用户,请执行此操作。

public function create() 
{ 
    $user = User::create(request()->all()); 
    return $user; 
} 

如果你真的想要返回输入,那么你可以这样做。

public function create() 
{ 
    $inputs = request()->all(); 
    User::create($inputs); 
    return $inputs; 
} 

同时也忽略IDE中魔术方法和流畅语法的警告。当谈到这件事时,Laravel并不是最善良的人。你可以使用这个包来帮助解决这个问题。

https://github.com/barryvdh/laravel-ide-helper