簡體   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