在 Laravel 中从模型中删除之前如何处理数据?

How to handle data before delete from model in Laravel?

我有以下方法:

public function destroy($id)
    {

        $id = \JWTAuth::parseToken()->authenticate();
        $offer = Offer::findOrFail($id);
        $offer->delete();

        return response()->json(["offer" => $offer]);
    }

删除前如何处理数据?我需要检查用户是否有删除数据的权限

当您使用 authenticate() 方法时,将检索用户模型,因此这意味着您拥有的 id 不是 id,而是 User。您是否检查过 the documentation of JWT 因为首先您必须检索用户,这就足够了:

 $user = \JWTAuth::parseToken()->authenticate();

然后,如果您在 users table 中有一个字段来判断用户是否有权说 admin,可以是 1 或 0,那么您可以执行以下:

if($user->admin == 1)
{
    $offer = Offer::findOrFail(1); //say id
    $offer->delete();

    return response()->json(["offer" => $offer]);
}

return response()->json(['error' => 'you dont have the right to delete this'], 403);

这个想法有点草率,但我最好的建议是对 JWT 的实现方式进行一些搜索,我敢肯定您会在网上找到很多。

我建议使用模特的删除事件:

https://github.com/laravel/framework/blob/5.2/src/Illuminate/Database/Eloquent/Model.php#L1122

handle它。

这将保证如果您在模型上使用 delete 方法,您将始终检查权限。