5

Orders_ControllerLaravel には getOrders($user)という関数があります。生の DB クエリを呼び出し、返される JSON 配列を構築します。

ルート ファイル内からこの関数を呼び出す方法がわかりません。

基本的に、ルートで POST を受け取り、新しい注文を挿入してから、この Routes 関数から getOrders(user) を呼び出して、特定のユーザーの既存の注文をすべて取得します。

Routes.php 内からこの関数を呼び出す方法を誰かが教えてくれますか?

Routes.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 (コントローラーフォルダー内)

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

5 に答える 5

6

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
});

ルートで (:num) を使用している理由であるユーザー ID を渡していると思います。

それが役立つことを願っています。

于 2012-12-02T22:07:21.353 に答える
4

私が使用した別の方法がありますが、おそらく間違っていますが、それはあなたのために働くかもしれません.

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

詳細と使用方法については、Controller クラスのドキュメントを参照してください。

于 2013-01-25T12:11:29.467 に答える
2

myOrders 関数は、データ アクセスで動作するため、おそらく注文モデルに含める必要があります。次に、それを呼び出すには、Orders::myOrders($user) を実行します。

于 2012-12-02T21:57:17.820 に答える
1

Routes.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();
});

application / models / Order.php

class Order extends Eloquent
{
    public static function myOrders($user_id)
    {
        return Order::where_user_id($user_id);
    }
}
于 2012-12-02T22:10:29.813 に答える