我系统上几乎每个表都有一个字段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'));
任何? ;)
答案 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 {
}