【问题标题】:Laravel - Symfony\Component\Debug\Exception\FatalThrowableError: syntax error, unexpected 'if' (T_IF)Laravel - Symfony\Component\Debug\Exception\FatalThrowableError:语法错误,意外的“如果”(T_IF)
【发布时间】:2019-10-10 09:20:00
【问题描述】:

我正在开发一个使用 Angular-7 作为前端和 Laravel-5.8 的应用程序。我正在使用 Laravel Spatie 进行用户管理。我有这三个表:

表格

CREATE TABLE `client` (
  `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  `client_id` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `client_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE `trips` (
  `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  `dispatch_datetime` datetime DEFAULT NULL,
  `loading_date` date DEFAULT NULL,
  `loaded_from` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `destination` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `client_id` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE `users` (
  `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `email` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `password` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `client_id` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

从上面的表格中,我有三个类:User、Client 和 Trip。我使用 Laravel Spatie 让用户只能访问他们被授予权限的数据。这是完美的工作。

现在,我想通过 ApiController 实现以下目标:

  1. 登录用户应该只能查看他的客户开始的行程。

  2. 如果登录用户属于client_id 为MBB 的客户端,他应该能够查看数据库中所有客户端的所有行程,除非他没有查看行程的权限。

    public function index(Request $request){
        $user = Auth::user();
        $userClientId = Auth::user()->client_id;

        if(!Auth::user()->hasPermissionTo('View Trip')){
            return response()->json([ "message" => 'User do not have permission'], 401);
        }

        try{  

            if(Auth::user()->client_id == 'MBB')
            {      
                if(($request->get('sort')!='null' && $request->get('sort')!='') && $request->get('search')){
                    $trip = Trip::where("trip_number", "LIKE", "%{$request->get('search')}%")->orderby($request->get('sort'), $request->get('order'))->paginate(10);
                } else if(($request->get('sort')!='null' && $request->get('sort')!='')){
                    $trip = Trip::orderby($request->get('sort'), $request->get('order'))->paginate(10);
                }
                else if($request->get('search'))
                    $trip = Trip::where("trip_number", "LIKE", "%{$request->get('search')}%")->paginate(10);
                else
                    $trip = Trip::paginate(10);
            }
            else 
            {
                $trip = Trip::where('client_id', $userClientId)
                if(($request->get('sort')!='null' && $request->get('sort')!='') && $request->get('search')){
                    $trip = $trip->where("trip_number", "LIKE", "%{$request->get('search')}%")->orderby($request->get('sort'), $request->get('order'))->paginate(10);
                } else if(($request->get('sort')!='null' && $request->get('sort')!='')){
                    $trip = $trip->orderby($request->get('sort'), $request->get('order'))->paginate(10);
                } else if($request->get('search')) {
                    $trip = $trip->where("trip_number", "LIKE", "%{$request->get('search')}%")->paginate(10);
                } else{
                    $trip = $trip->paginate(10);
                }

            }
            return response()->json($trip, 200);
        }
        catch(QueryException $e)
        {

            $errorCode = $e->errorInfo[1];

            return response()->json($errorCode);
        }
    }

当我加载页面时,我收到了这个错误:

语法错误,意外的 'if' (T_IF)

然后当我点击控制台中的错误时,它把我带到了 Laravel 上的这个页面:

所以,我观察到错误来自 else 语句(图中的第 56 行,我在其中突出显示了黄色),其中 client_id 不是 MBB。我看了看声明,看不出有什么不妥。 如何解决此错误?

【问题讨论】:

    标签: angular laravel


    【解决方案1】:

    你忘记了第 55 行的分号。意外错误在大多数情况下是指语法错误

    $trip = Trip::where('client_id', $userClientId);
                                                   ^^
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-22
      • 2017-12-06
      • 2022-01-21
      • 2017-03-08
      • 2019-08-02
      • 2020-05-15
      • 2018-08-18
      • 1970-01-01
      相关资源
      最近更新 更多