当记录不存在时,来自 SQL 验证的 Laravel 输出



我正在学习Laravel,我有一个不明白的问题。

我正在使用查询生成器来运行自己的查询,但我真的不知道在没有记录时如何返回错误消息:

public function store()
    {
       $item = request()->validate([
           'item' => 'required|min:6|max:10'
       ]);
         $details = DB::connection('sqlsrv')->table('TABLENAME')->where('ITEMID', '=',  $item )->get();
         return view('itemdetails.create', compact('details'));
    }

因此,如果$details null我需要返回消息该怎么做?类似于raw PHP

if(empty($details))
{
throw new Exception('My text')
}

或者签入blade文件:

 @if (count($details) != 1)
        I don't have a record!
    @endif

我试过firstOrFail但看起来这不起作用。

还有其他方法(最佳方法(吗?

在控制器中

     $validator = Validator::make($request->all(), [
               'item' => 'required|min:6|max:10'
            ]);             
     $details = DB::connection('sqlsrv')->table('TABLENAME')->where('ITEMID', '=',  $item )->get();
      if (!$details) {
           $validator->errors()->add('item', 'Item not found');
      }
       if ($validator->fails()) {
             return redirect()
                    ->back()
                    ->withErrors($validator)
                    ->withInput();
        }
    return view('itemdetails.create', compact('details'));
}

并在视图文件中

{{$validator->errors()->first('item')}}

如果条件对控制器有效,则只需使用正常

if($details) //True
{
   //Redirect to..
}else
{
   //Redirect to..  //False
}

对于刀片,您可以使用@if(count($details))如果为 true,则会显示信息@else {{No data}} @endif

最新更新