繁体   English   中英

Laravel验证从一列获取值并将其与另一个表列进行比较

[英]Laravel validation get value from a column and compare it to another table column

我有以下表格:

- companies
- users
- departments
- services

我们具有以下结构:

A user belongs to a company
A company has many departments
One department has multiple services.

问题是我想仅使用服务ID来验证具有特定company_id标志的服务部门。

数据库:

公司

| id | name         |
| 1  | Company 1    |
| 2  | Company 2    |

用户

| id | name         | company_id |
| 1  | User 1       | 1          |

部门

| id | name         | company_id |
| 1  | Department 1 | 1          |
| 2  | Department 2 | 2          |

服务

| id | name      | departments_id |
| 1  | Service 1 | 1              |
| 2  | Service 2 | 2              |

端点看起来像这样:

迷迷糊糊的用户属于Company 1

$app->delete('/{id}', ['uses' => 'ServicesController@deleteService']);

删除服务方式

public function deleteService($id, Request $request)
{
    $request['id'] = $id;
    $this->validate($request, [
        'id' => 'required|exists:services,id',
    ]);

    $result = Service::deleteService($id, $this->user->company_id);
    return response()->json($result);
}

Company 1的用户不能删除Service 2 我该如何实现?

谢谢。

最可监督的方式是编写自定义验证器

您可以使用Laravel中的policies进行操作,请检查文档

会像这样

    $request['id'] = $id;
$this->validate($request, [
    'id' => 'required|exists:services,id',
    ]);


$this->authorize('delete', $id); // will check if user can delete the company as the needed logic. 

$result = Service::deleteService($id, $this->user->company_id);
return response()->json($result);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM