2017-02-11 111 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参数用于查询以仅检索特定状态的订单。