为什么我的模型范围不起作用并返回一个空数组?

时间:2016-09-21 16:13:37

标签: laravel eloquent

为什么我使用范围获得空集合结果?这是我目前的控制人员:

class PunxController extends Controller {
    public function index()
    {
        $scholars = Scholar::age()->get();

        return $scholars;
    }
}

以及我的模型Scholar

use Illuminate\Database\Eloquent\Model;

class Scholar extends Model {

    protected $primaryKey = 'scholar_id';
    protected $fillable = ['ngo_id','scholar_lname','scholar_fname','scholar_image','scholar_nickname','scholar_cityAddress','scholar_permaAddress','scholar_birthday','scholar_placebirth','scholar_age','scholar_gender','scholar_email','scholar_contact'];

    public static function scopeAge($query)
    {
        return $query->where('scholar_age', '>=', 5);
    }
}

结果是:

enter image description here

但是当我尝试 PHPMYADMIN

enter image description here

UPDATE1

DB::getQueryLog()

的结果

enter image description here

2 个答案:

答案 0 :(得分:2)

从您的方法中删除static关键字。范围不应该是静态的。

public function scopeAge($query)
{
    return $query->where('scholar_age', '>=', 5);
}

我猜你想提供5作为范围的参数,而不是硬编码。在这种情况下,你可以这样做:

public function scopeAge($query, $age)
{
    return $query->where('scholar_age', '>=', $age);
}

并称之为

Scholar::age(5)->get();

答案 1 :(得分:0)

试试这个:

public function scopeAge($query)
{
    return $query->where('scholar_age', '>=', 5);
}