2017-02-11 93 views
0

我有我認爲可能是一個非常簡單的問題。在Laravel中使用資源路由

我產生了我的班「訂單」的資源路線,因爲他們將需要創建,銷燬,編輯,查看等

我有我的應用程序一個地方,我想加載所有訂單通過目前「傑出」(!=完成)的AJAX。

我想我應該使用orders.show路線來做這件事,是嗎?我唯一的困惑來自於URI由此說來訪問orders.show路線,你需要指定命令,就像這樣:

訂單/ {}爲了

enter image description here

如果我想使用AJAX與我的控制器交談,以便控制器返回它從狀態!=完成的數據庫中獲取的訂單列表,我在URI中指定了什麼?我不想搶一個訂單,我想抓住幾個。

從我的控制器:

public function show(Order $order){ 
    $orders = Order::where('status', '!=' , 'Received')->get(); 
    return $orders; 
    } 

非常感謝。

回答

2

show方法是當您返回單個資源 - 單個訂單。這就是爲什麼它將訂單的參考作爲路線的一部分。

index方法是返回一個資源集合 - 多個訂單的方法。您可以採取以下幾種方式:您可以有一個默認返回所有訂單的常規OrdersController,但查詢參數可能會限制基於狀態,或者您可以創建一個特定的OutstandingOrdersController,它只返回那些訂單。

下面是一個例子,說明如何使用第一種方法。

class OrdersController extends Controller 
{ 
    public function index() 
    { 
     $orders = Order::query(); 

     if (request()->has('outstanding')) { 
      $orders->where('status', '!=', 'Received'); 
     } 

     return $orders->get(); 
    } 
} 

然後,你的Ajax庫可以做GET /orders所有訂單,或GET /orders?outstanding只檢索未完成的訂單。您也可以考慮將status參數用於查詢以僅檢索特定狀態的訂單。