[英]Call Controller Function from Laravel Routes.php
我在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 ...");
}
}
根据 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) 的原因。
希望有帮助。
我使用了另一种方法,可能不正确,但它可能对您有用。
$userOrders = Controller::call('order@myOrders', array($thisUser))->content
有关更多信息以及如何使用它,请查看Controller 类的文档。
myOrders 函数可能应该进入您的订单模型,因为它使用数据访问。 然后,要调用它,您需要执行 Orders::myOrders($user)。
更简单的方法是将控制器作为类调用
Route::post( 'post', function() use ($user) {
return (new OrderController)->myOrders($user);
});
路由.php
//Handle a new order POST
Route::post('orders/(:num)', function($user) {
...
... //HANDLE POST DATA AND INSERT NEW ORDER
...
});
Route::get('orders', function($user) {
//GET ALL ORDERS FOR THIS USER FROM ORDER MODEL
$userOrders = Order::myOrders($user)->get();
});
应用程序/模型/Order.php
class Order extends Eloquent
{
public function myOrders($user_id)
{
return Order::where_user_id($user_id);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.