2016-09-18 3 views
0

Я новичок в laravel, и у меня есть некоторые проблемы с управлением отношениями с моделью и контроллером.Связь с моделью и конвейером laravel 5

У меня есть IndexController, где под названием:

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

Модель файла:

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 

Может кто-нибудь объяснить, Что я делать неправильно? Большое спасибо.

+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) { //.... }   

Думаю, это вам поможет.

Смежные вопросы