Php 如何在laravel中检查当前用户

Php 如何在laravel中检查当前用户,php,laravel,laravel-blade,Php,Laravel,Laravel Blade,我想知道如何检查当前用户是否有订单?如果已显示列表,如果未显示消息 目前我正在使用此功能,但效果不佳: @if (empty(Auth::user()->order)) <blockquote> <h1>Sorry you have no order at the moment, would you like to check out our products?</h1> <foo

我想知道如何检查当前用户是否有订单?如果已显示列表,如果未显示消息

目前我正在使用此功能,但效果不佳:

  @if (empty(Auth::user()->order))
        <blockquote>
            <h1>Sorry you have no order at the moment, would you like to check out our products?</h1>
            <footer><a href="{{route('shop')}}">Click here</a></footer>
        </blockquote>
      @else
.......

@endif
订单型号:

public function user(){
     return $this->belongsTo(User::class);
  }
显示订单历史记录视图的我的控制器:

public function index()
    {
      $user = Auth::user();
      $orders = Order::where("user_id", "=", $user->id)->orderby('id', 'desc')->paginate(10);
      return view('users.orders', compact('user', 'orders'));
    }

要实现这一点,有几个先决条件:

  • 拥有正确的数据库模式
  • 有安装(似乎你需要
  • 如果您有此项,并假设您的关系设置为:

    class User extends Model{
        /**
         * Get the orders for the user
         */
        public function orders(){
            return $this->hasMany('App\Order');
        }
    }
    
    您可以使用
    forelse
    blade语法

    @forelse (Auth::user()->orders as $order)
        <li>{{ $order->title }}</li>
    @empty
        <blockquote>
            <h1>Sorry you have no order at the moment, would you like to check out our products?</h1>
            <footer><a href="{{route('shop')}}">Click here</a></footer>
        </blockquote>
    @endforelse
    
    @forelse(Auth::user()->订单为$order)
    
  • {{$order->title}
  • @空的 对不起,您现在没有订单,您想看看我们的产品吗? @endforelse

    这将创建一个
    for
    循环,您可以在该循环中声明订单的html布局。如果没有订单,则将使用
    块。

    要实现此功能,有几个先决条件:

  • 拥有正确的数据库模式
  • 有安装(似乎你需要
  • 如果您有此项,并假设您的关系设置为:

    class User extends Model{
        /**
         * Get the orders for the user
         */
        public function orders(){
            return $this->hasMany('App\Order');
        }
    }
    
    您可以使用
    forelse
    blade语法

    @forelse (Auth::user()->orders as $order)
        <li>{{ $order->title }}</li>
    @empty
        <blockquote>
            <h1>Sorry you have no order at the moment, would you like to check out our products?</h1>
            <footer><a href="{{route('shop')}}">Click here</a></footer>
        </blockquote>
    @endforelse
    
    @forelse(Auth::user()->订单为$order)
    
  • {{$order->title}
  • @空的 对不起,您现在没有订单,您想看看我们的产品吗? @endforelse

    这将创建一个
    for
    循环,您可以在其中声明订单的html布局。如果没有订单,将使用
    空的
    块。

    您可以使用以下方法计算订单:

    Auth::user()->orders->count()
    

    您可以使用以下方法计算订单:

    Auth::user()->orders->count()
    

    你能描述一下“它工作不好”是什么意思吗?你的数据库的结构是什么?除此之外,从视图访问模型是违反MVC原则的,在你的控制器中设置一个布尔值,它指示是否存在顺序。@DanielAlexandrov我的意思是它显示我的表而不是显示文本(在我的代码中)当用户没有订单时,我想用
    order
    表检查记录的用户id,如果记录的用户id与订单表中的任何订单匹配,则显示他/她的订单列表,否则显示没有任何订单的文本。您可以计算订单:Auth::user()->orders->count()@M1Ö请回答您的评论,以便我批准。谢谢。您能描述一下“它工作不好”是什么意思吗?数据库的结构是什么?除此之外,从视图访问模型是违反MVC原则的,请在控制器中设置一个布尔值,指示是否存在顺序。@DanielAlexandrov我的意思是它显示我的表,而不是显示文本(在我的代码中)当用户没有订单时,我想用
    order
    表检查记录的用户id,如果记录的用户id与订单表中的任何订单匹配,则显示他/她的订单列表,否则显示没有任何订单的文本。您可以计算订单:Auth::user()->orders->count()@M1Ö请将您的评论作为一个答案,以便我批准。谢谢。@RobertNicjoo那么您没有设置正确的关系,我想,您可以编辑您的原始问题以包括您的用户类吗?您是否尝试过调试输出?控制器中的
    dd($orders)
    是什么(在
    返回之前)
    )收益率?已经被
    @if(Auth::user()->order->count())
    修复了,谢谢你。这意味着你的“错误”只是一个拼写错误,如果你用
    Auth::user()替换
    orders
    ,我的答案就行了->订单
    。很高兴为您提供帮助您的答案有一个大问题,除了拼写错误和您试图获取循环,那就是
    forelse
    ,我不知道为什么,但似乎拉威尔不知道这个查询
    forelse
    !无论如何,谢谢。@RobertNicjoo那么您没有设置正确的关系,我想,您可以编辑您的原始问题吗o包括您的用户类您是否尝试过调试输出?控制器中的
    dd($orders)
    产生了什么(在
    返回之前)
    ?已由
    @if(Auth::user()->order->count())
    修复。谢谢。这意味着您的“错误”这只是一个拼写错误,如果用
    Auth::user()替换
    Auth::user()->orders
    ,我的答案就行了->订单
    。很高兴为您提供帮助您的答案有一个大问题,除了拼写错误和您试图获取循环之外,那就是
    forelse
    ,我不知道为什么,但似乎laravel不知道此查询
    forelse
    !无论如何,谢谢您。