laravel - 如何使用 Laravel 仅显示特定用户的数据
问题描述
我正在尝试显示与用户相关的数据,但不幸的是它不起作用。目前,当我通过表单提交订单时,每个帐户都可以看到数据。如何仅显示提交数据的特定人员的数据?
数据库
表 digitizing_orders 表有
id | order_name | order_placement | user_id
数字化订单模型
class Digitizingorder extends Model
{
protected $table = "digitizing_orders";
public function user()
{
return $this->belongsTo('App\User');
}
}
用户模型
class User extends Authenticatable
{
public function digitizing()
{
return $this->hasMany('App\Digitizingorder');
}
}
控制器
public function index()
{
$data = [
'digitizings' => Digitizingorder::with('user')->where('id', '!=', Auth::id())->get()
];
return view('front_end.Customerprofile.digitizing_view_order', $data);
}
解决方案
使用策略,它们可以保护模型上的控制器操作免受未经授权的用户的影响。
生成并注册策略后,您可以使用如下方法:
class DigitizingorderPolicy
{
/**
* Determine if the given Model can be Viewed by the user.
*
* @param \App\User $user
* @param \App\Digitizingorder $digitizingorder
* @return bool
*/
public function view(User $user, Digitizingorder $digitizingorder)
{
return $user->id === $digitizingorder->user_id;
}
}
您可以定义方法内部的内容以满足用户查看模型的条件(例如权限或角色)。
调用它的方法之一是在控制器中:
public function show(Request $request, Digitizingorder $digitizingorder )
{
$this->authorize('view', $digitizingorder);
// The current user can view the digitizingorder ...
}
我建议阅读有关它的文档,它们是使用策略的多种方式/方法,并且可能包含对您有用的内容。
推荐阅读
- caching - 在哪种情况下FIFO优于LRU?有可能吗?
- php - 在 Symfony 中配置 HTTP 请求方法?
- generics - fn 的可选泛型类型参数?
- ios - 当内容与屏幕大小几乎相同时,UIScrollView 会跳转
- amazon-web-services - 在 AWS EC2 上使用 SSH 时没有 RDS 环境
- javascript - 如何在反应js中显示来自firebase存储的所有图像
- c# - 使用 Dispacher.BeginInvoke 从并行循环调用 UI 线程
- jenkins - 根据不同的参数值在jenkinsfile中设置变量值
- python - 提交 ML 训练作业时 GCP 未检测到正确的 python 版本
- java - 在 Java 中查看 MVC 模式中的职责