laravel - Laravel Eloquent 模型,向 ->get() 函数添加查询
问题描述
我想覆盖我的客户模型中的 get 函数。
public function get(array $options = [])
{
$user = \Auth::user();
if($user->role_id == 1){
return parent::get();
}else if($user->role_id == 4){
return parent::where("user_id", $user->id)->get();
}else if($user->role_id == 3){
$users = User::where("user_id", $user->id)->get();
return parent::where("user_id", $user->id)->orWhereIn('user_id', $users)->get();
}
}
这可能吗 ?
解决方案
你需要的是global scopes
全局范围允许您为给定模型的所有查询添加约束。Laravel 自己的软删除功能利用全局范围仅从数据库中提取“未删除”模型。编写自己的全局作用域可以提供一种方便、简单的方法来确保给定模型的每个查询都接收到某些约束。
推荐阅读
- azure - 安装适用于 C 的 Azure IoT SDK 时出现问题
- reactjs - 在保持松耦合的同时整合 API 调用的模式?
- linux - 更新 apt 会破坏我在 Ubuntu 18.04 上构建的 docker
- c++ - 如何在 C++ 或 OpenCV SubMatrix 中的 2D 子向量上使用 OpenACC?
- python - 什么是在不涉及炮击的 python 中运行强盗的更简洁的方法
- python - 如何检查列表中是否存在整数或字符串
- azure - Azure CDN 终结点:为默认自定义域 mediaservice-inct.streaming.media.azure.net 启用 HTTPS
- ubuntu - CMake 错误:CMake 无法找到与“Unix Makefiles”对应的构建程序。CMAKE_MAKE_PROGRAM 未设置。在 Ubuntu 中
- c# - 如何使用 CreatedAtRoute() 方法响应发布请求
- reactjs - 为 Redux 操作设置 Typescript 接口(类型“...”没有调用签名)