如何检查laravel

时间:2017-07-23 19:42:22

标签: 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>
            <footer><a href="{{route('shop')}}">Click here</a></footer>
        </blockquote>
      @else
.......

@endif

用户模型:

public function order(){
       return $this->hasMany(Order::class);
    }

订单型号:

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'));
    }

2 个答案:

答案 0 :(得分:1)

要实现这一目标,有一些先决条件:

  1. 拥有正确的数据库架构
  2. 设置relations(您似乎需要one-to-many
  3. 如果您有此并假设您的关系设置为:

    class User extends Model{
        /**
         * Get the orders for the user
         */
        public function orders(){
            return $this->hasMany('App\Order');
        }
    }
    

    您可以使用forelse刀片语法

    @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
    

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

答案 1 :(得分:-1)

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

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