如何在 User::find() 时默认加上 where 条件

假设有2个Admin 和 User的 Model,它们使用 User 表.
如何让下面的等式成立
User::find(1)   ==   User::where('role', '=', 'user')->first()
Admin::find(1)  ==   Admin::where('role', '=', 'admin')->first()
已邀请:

安正超

赞同来自: wd_828

不建议这样等于,这在理解上并不太好,建议使用scope查询:
//普通用户
User::normal()->find(1);
//管理员
User::admin()->find(1);

模型里添加下面两个方法:
//普通用户
function scopeNormal($query) {
return $query->where('role', 'user');
}
//管理员
function scopeAdmin($query) {
return $query->where('role', 'admin');
}

qiyu2580

赞同来自:

Global scope model
class Comment extends Eloquent {

public function newQuery()
{
return parent::newQuery()->where('cat', '=', 6);
}

// Now when you will perform a query like :
// Comment::count()
// Your scope defined in the newQuery will be used

mvc999

赞同来自:

很有用的

mark

赞同来自:

建立一个Repository,其中重写了find
然后在控制器 __construct 中注入这个类

要回复问题请先登录注册