2017-05-29 106 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