2016-09-28 2 views
0

私のコントローラでstudent-idからdepartment nameを生成しようとしています。そして、databaseに保存してみてください。なぜこの 'App Http Controllers Auth String、インスタンスのインスタンス...'エラー?

protected function create(array $data) 
{ 
    return User::create([ 
     'name' => $data['name'], 
     'roll' => $data['roll'], 
     'email' => $data['email'], 
     'password' => bcrypt($data['password']), 
     'department' => $this->department($data['roll']), 
    ]); 
} 

AND関数departmentは次のとおりです: - しかし、私はlaravelに次のエラーメッセージを発見したdatabaseにデータを保存するための enter image description here

、コードがある

private function department(String $r) 
{ 
    if($r.length() == 6) 
    { 
     $d = $r.charAt(3); 
    } 
    else { 
     $d = $r.charAt(4); 
    } 

    switch ($d) 
    { 
     case '0': return 'CE'; 
     case '1': return 'EEE'; 
     case '2': return 'ME'; 
     case '3': return 'CSE'; 
    } 
} 

EDIT:更新されたクラスは次のとおりです:

protected function create(array $data) 
{ 
    return User::create([ 
     'name' => $data['name'], 
     'roll' => $data['roll'], 
     'email' => $data['email'], 
     'password' => bcrypt($data['password']), 
     'department' => $this->department($data), 
    ]); 
} 

private function department(array $r) 
{ 
    switch (substr($r['roll'], -3)) 
    { 
     case "0": return "CE"; 
     case "1": return "EEE"; 
     case "2": return "ME"; 
     case "3": return "CSE"; 
    } 
} 

しかし、departmentの値は返されません。

+1

あなたの方法にそのインスタンスを渡すには、( '部門を試してみてください\ String $ r) '? –

+0

コメントにコードを入れないでください。それは判読不能です。あなたの質問を編集してそこに置いてください。 –

+0

ありがとうございました。 –

答えて

0

\Stringを使用しない場合、PHPはタイプチェックではなくクラス名として認識します。

また、クラス定義の前にuse String;を追加することもできます。

0

あなたはこの

private function department(String $r) 

のようなメソッドを作るときにそれはあなたの引数は、現在のスコープ/名前空間内のクラスStringからオブジェクトです$rという名前の変数であることを意味します。

しかし、あなたがそう

単純型に
'department' => $this->department($data['roll']), 

string VARを渡すあなたの方法を実行するとき、あなたはあなたのStringクラスが存在するかどうかを確認する必要があり、その後

関連する問題