[英]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.