2017-05-29 2 views
1

Ich habe ein Problem, wenn ich versuche, neue Benutzer mit User::create[] Methode zu erstellen.Laravel :: Create Methode

Ich las Laravel create method dieses Problem, aber es hat mir nicht helfen:

Unten ist mein User-Modell:

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

Hier, mein Controller-Code:

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

PhpShtorm zeigt mir Diese Mitteilung:

Konstante create not found in ...

Wie kann ich es beheben und einen neuen Benutzer erstellen?

+2

'User :: create ($ input);' erstellen ist kein Array es ein Verfahren ist. –

+0

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

+0

@HakanSONMEZ bitte fügen Sie hinzu, was Sie in der Antwort erwähnen, weil es richtige Antwort. –

Antwort

2

Sie versuchen, auf create als Array zugreifen, es ist eine Methode, wie folgt: create(). Ändern Sie die eckigen Klammern im folgenden Code.

Ihre IDE erkennt die Methode möglicherweise nicht, da sie mit magic methods aufgerufen wird. Wenn Sie die Methode richtig erkennen möchten, verwenden Sie laravel-ide-helper.

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

http://i.imgur.com/wWy8U19.png jetzt kann es keine Methode finden –

+0

@ ДимаСвободин Die IDE kann es nicht finden, weil es mit magischen Methoden aufgerufen wird, aber es funktioniert. –

0

Diese Syntax sucht eine Konstante mit dem Namen bar in Klasse Foo.

Foo::bar 

Wenn Bar ist eine Methode, ... Sie müssen es nennen mit parenthesys

Foo::bar() 

Wenn Sie schreiben Foo :: bar [ 'foo']; Sie erwarten

Sie sind in App-Namespace eine Konstante wie

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

Ich glaube nicht, dass dies die richtige Syntax zu finden. Existiert die App \ User-Klasse? Und App \ User-Klasse haben eine Methode "create"?

Manchmal zeigen IDE Fehler, selbst wenn der Code perfekt funktioniert.

+0

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

+0

Ist ein IDE-Problem: Überprüfen Sie, ob Code in Ihrem Browser funktioniert. Manchmal erkennt die IDE den Code nicht. – sensorario

1

Sie müssen create() anrufen. Angenommen, Sie möchten den erstellten Benutzer zurückgeben, dann tun Sie dies.

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

Wenn Sie wirklich die Eingabe zurückgeben wollten, dann können Sie dies tun.

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

Ignorieren Sie auch die Warnungen zu magischen Methoden und fließenden Syntax in IDE. Laravel ist nicht der freundlichste, wenn es darum geht. Sie können dieses Paket verwenden, um damit zu helfen.

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

Verwandte Themen