模型和控制器关系laravel 5

时间:2016-09-18 18:45:45

标签: php laravel laravel-5

我是laravel的新人,我有一些问题需要管理与模特和控制器的关系。

我有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

有人可以解释我做错了吗?非常感谢你。

2 个答案:

答案 0 :(得分:1)

首先从控制器返回值以进行验证,

    return $params['user_email'];       

如果您得到答案,请尝试按照以下代码。

您无需返回模型函数

您需要使用,

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

仅在模型中使用,

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

或者您正在使用计数功能,然后

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

我想,这会对你有帮助。

答案 1 :(得分: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();
    }

}

您不需要使用范围。