【发布时间】:2018-12-07 19:33:21
【问题描述】:
我有多个表格及其相互关联的模型,命名为:"users","posts","tags","comments"。
我想从所有这些模型中排除 deactive 用户的数据,并且无论何时调用这些模型中的任何一个,都不要返回 deactive 用户
我不想在他们的控制器中使用 eloquent 或查询构建器来排除那些“用户”,我需要在模型中执行此操作,以便它适用于所有使用所述模型的地方。
posts、cmets 和 tags 与用户的关系是:
public function user()
{
return $this->belongsTo('App\Models\User', 'user_id');
}
我在相关模型中需要这样的东西:
$instance = $this->belongsTo('App\Models\User', 'user_id');
$instance->whereIsDeactive(0);//return active users only
return $instance;
在用户模型中是这样的:
return $this->whereIsDeactive(0);
有可能吗?有没有办法做到这一点?
【问题讨论】:
-
研究使用全局范围:laravel.com/docs/5.7/eloquent#global-scopes。如果在用户模型上添加
deactive全局范围,则永远不应通过预加载获取deactive用户或相关数据。
标签: php laravel model conditional eager-loading