从 Laravel Routes.php 调用控制器函数

新手上路,请多包涵

我在 Laravel 中的 Orders_Controller 中有一个名为 getOrders($user) 的函数。它调用原始数据库查询并构建一个 JSON 数组以返回。

我不知道如何从我的路由文件中调用这个函数。

基本上我在路由中收到一个 POST,插入新订单,然后我想从此路由函数调用 getOrders(user) 以获取给定用户的所有现有订单。

有人可以帮我弄清楚如何从 Routes.php 中调用此函数吗?

路线.php

 //Handle a new order POST
Route::post('order', array('do' => function() {
    ...
    ... //HANDLE POST DATA AND INSERT NEW ORDER
    ...

    //GET ALL ORDERS FOR THIS USER FROM ORDER CONTROLLER
    $userOrders = Order_Controller::myOrders($thisUser);
}

order.php(在 Controllers 文件夹中)

 class Order_Controller extends Base_Controller
{
    public function myOrders($user){
        return DB::query("SELECT ...");
    }
}

原文由 jamis0n 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 390
2 个回答

正如 larauser 所建议的,您可以将 myOrders() 方法移至模型并静态调用它。这是一个例子

class Order extends Eloquent {

    public static function myOrders($user)
    {
         // DB call here
    }
}

然后在你的路线中你可以做

Route::post('order/(:num)', function($user)
{
    $userOrders = Order::myOrders($user);

    // Do stuff here
});

我猜你传递的是用户 ID,这就是我在路由中使用 (:num) 的原因。

希望有所帮助。

原文由 afarazit 发布,翻译遵循 CC BY-SA 3.0 许可协议

我用过另一种方法,可能不正确,但它可能对你有用。

 $userOrders = Controller::call('order@myOrders', array($thisUser))->content

有关更多信息以及如何使用它,请查看 Controller 类 的文档。

原文由 mattl 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏