2016-09-18 36 views
0

私はlaravelで新しく、モデルとコントローラとの関係を管理するには問題があります。モデルとコントローラの関係laravel 5

私はindexcontroller、と呼ばれる持っている:私は、エラーを持っている。その後

namespace App\Models; 

use Illuminate\Database\Eloquent\Model; 

class Users extends Model { 
    protected $table = 'users_data'; 

    public function scopeCheckOnExistsByEmail($query,$email){ 

     $count = $query->where('user_email','=',$email)->count(); 
     if ($count == 0){ 
      return false; 
     }else{ 
      return true; 
     } 

    } 

} 

:いただきました私

Object of class Illuminate\Database\Eloquent\Builder could not be converted to string 

誰かが説明してもらえ

$usersModel = new \App\Models\Users(); 
if ($usersModel->checkOnExistsByEmail($params['user_email'])){ 
    //...find it 
} 

モデルファイルを間違っている?どうもありがとうございました。

+1

コントローラがモデルではなくロジックを処理するようにします –

+1

'scopes'はブール値に変換できません、' scopes'はビルダーを返さなければなりません – xAoc

答えて

1

適切なモデルのコードは次のとおりです。

namespace App\Models; 

use Illuminate\Database\Eloquent\Model; 

class Users extends Model { 
    protected $table = 'users_data'; 

    public function checkOnExistsByEmail($email){ 
     return (bool)$this->where('email', $email)->first(); 
    } 

} 

あなたはスコープを使用する必要がいけません。

1

まず、あなたは答えを得る場合には、コードの下に従ってみてください

return $params['user_email'];  

、検証のために、コントローラから値を返します。

あなたは

は、あなたが使用する必要があるモデル関数に戻す必要はありませんが、モデルで

if(count($usersModel->checkOnExistsByEmail($params['user_email']) > 0)) { //.... } 

のみ使用し、

$query->where('email', $email);   

またはあなたが機能してカウントを使用しています、次に

if($usersModel->checkOnExistsByEmail($params['user_email']) > 0) { //.... }   

私はこれがあなたを助けると思う。