2017-07-23 56 views
-1

我想知道如何檢查當前用戶是否有任何訂單?是否顯示列表,如果不顯示消息?如何檢查laravel中的當前用戶

我目前使用這一點,但它不能很好地工作:

@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

你能描述一下你的「它不能很好地工作」是什麼意思?你的數據庫的結構是什麼?除此之外,從視圖訪問模型違反了MVC原則,在您的控制器中設置布爾值,表示存在或不存在訂單。 –

+0

@DanielAlexandrov我的意思是它顯示我的表,而不是顯示文本(這是在我的代碼中),當用戶沒有訂單時,我想檢查記錄的用戶ID與'訂單'表,並且如果記錄的用戶ID匹配任何訂單在訂單表中顯示他/她的訂單清單中顯示的文本中沒有任何訂單。 –

+1

您可以對訂單進行計數:Auth :: user() - > orders-> count() –

回答

-1

可以使用數訂單:

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

得到這個工作有幾個先決條件:

  1. 有一個正確的DB模式
  2. relations設置(看來你需要one-to-many

如果你有這樣的假設您關係設置爲:

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塊。

+0

不,它不會做ID! –

+0

@RobertNicjoo然後你還沒有設置正確的關係,我想,你可以編輯你的原始問題,包括你的用戶類 – milo526

+0

更新......... –

相關問題