【问题标题】:Handle exception in laravel在 laravel 中处理异常
【发布时间】:2018-03-09 06:18:19
【问题描述】:

我已经编写了用于在 laravel 中创建角色的代码,当我尝试创建新角色时,我正在使用 spatie 包,然后它给出了类似的异常 Spatie \ Permission \ Exceptions \ RoleDoesNotExist

我知道它的生成,因为角色不存在,我不知道如何处理 laravel 中的异常。

还有什么方法可以先检查角色是否存在然后添加角色? 以下是我的代码

public function create()
    {
         //print_r($_POST);
         $role_name=$_POST['name'];
         $create_product=NULL;
         $edit_product=NULL;
         $view_product=NULL;

          if(isset($_POST['create_products']))
         {
            $create_product=$_POST['create_products'];
         }
         if(isset($_POST['view_products']))
         {
            $view_product=$_POST['view_products'];
         }
          if(isset($_POST['edit_products']))
         {
            $edit_product=$_POST['edit_products'];
         }
         echo $create_product; echo $view_product; echo $edit_product;

         dd(Role::findByName($role_name));

【问题讨论】:

  • 在 Laravel 中处理异常就像在任何 PHP 应用程序中处理异常一样。 try/catch

标签: php laravel exception


【解决方案1】:

尝试使用 laravel 的 findOrNew。它将尝试在数据库中找到与给定属性匹配的记录。但是,如果没有找到模型,则会返回一个新的模型实例。

$role = Role::firstOrNew(array('name' => Input::get('role_name'))); 
$role->name = Input::get('role_name'); 
$role->save();

【讨论】:

  • 是的,它是正确的,但我不知道为什么它不起作用,但它是正确的
  • 你使用的是什么防护装置?在模型集中受保护的 $guard_name = 'web'
【解决方案2】:

我已经检查了数据库中是否存在给定的角色

 $s=Role::where('name', $role_name)->count();


         if($s==1)
        {
            echo "Role Already Exists";
        }
        else{

        }

感谢您的帮助

【讨论】:

    【解决方案3】:

    您应该在当前文件中加载具有命名空间的类。

    f.e

    Use App\Lib\Role;

    【讨论】:

    • 我有地方角色类
    【解决方案4】:

    您可以通过调用exists方法检查模型是否存在:

    if (Model::where('attribute', $value)->exists()) {
        // do something 
    }
    

    【讨论】:

      猜你喜欢
      • 2014-04-22
      • 1970-01-01
      • 1970-01-01
      • 2020-03-08
      • 2019-08-07
      • 2023-03-19
      • 1970-01-01
      • 2015-02-18
      相关资源
      最近更新 更多