我认为这可能是一个非常简单的问题。
我为我的班级订购了一条资源路线,因为它们需要被创建,销毁,编辑,查看等等。
我的应用程序中有一个位置,我希望通过AJAX加载所有订单,这些订单目前是“杰出的”#39; (!=完成)。
我想我应该使用orders.show路线,是吗?我唯一的困惑在于它所说的访问orders.show路由的URI,你需要指定一个订单,如下所示:
为了/ {顺序}
如果我想使用AJAX与我的控制器交谈,以便控制器返回它从状态!=完成的数据库中获取的订单列表,我在URI中指定了什么?我不想抓一个订单,我想抓住一个订单。
来自我的控制器:
public function show(Order $order){
$orders = Order::where('status', '!=' , 'Received')->get();
return $orders;
}
非常感谢。
答案 0 :(得分: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
参数,以仅检索特定状态的订单。