在laravel eloquent select上添加额外条件

时间:2015-11-06 13:11:51

标签: php laravel eloquent

我系统上几乎每个表都有一个字段id_unity,用于控制注册表的统一。

我想知道是否可以从eloquent更改->get()->lists()方法添加

->where('id_unity',Session::get('unity'); 

在每次选择之前,所以我会这样做:

Products::all(); //and that actually will be 
Products::where('id_unity',Session::get('unity'));

任何? ;)

1 个答案:

答案 0 :(得分:3)

您可以使用查询范围:

public function scopeGetAll($query)
{
   return $query->where('id_unity', Session::get('unity'))->get();
}

然后静态调用它而不使用“scope”前缀:

Products::getAll();

如果您想让所有模型都可以使用它,只需创建一个模型扩展的基础模型类,您可以在其中定义该函数。

Base.php

use Illuminate\Database\Eloquent\Model;
use Session;

class Base extends Model {

    public function scopeGetAll($query)
    {
       return $query->where('id_unity', Session::get('unity'))->get();
    }    
}

Products.php

use Base;
class Products extends Base {

}