我是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
有人可以解释我做错了吗?非常感谢你。
答案 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();
}
}
您不需要使用范围。