0

私がこれを手に入れたら:

    $result = 
    DB::select(
    'orders.date_created'
    )
    ->from('orders') 
    ->execute()->as_array();

通常の場合、すべての注文をdsiplayingdate_created。これで、ユーザーでフィルタリングできます。これを実行しますか?user_id = 112

これは私にこれを持たせるでしょう:

    if(isset($get['user_id']))
    {
        $result = 
        DB::select(
        'orders.date_created'
        )
        ->from('orders') 
                    ->where('user_id', '=', $get['user_id'])
        ->execute()->as_array();
    }else{
        $result = 
        DB::select(
        'orders.date_created'
        )
        ->from('orders')
        ->execute()->as_array();
    }

これは私にとっては問題ありませんが、(4 whereステートメント)からフィルターで除外する4つのパラメーターがある場合、これは非常に醜いコードになります。例:?user_id = 112&quantity = 2&...

$ get ['user_id']に何もない場合、すべてのuser_idを取得するインラインif / actionステートメントを作成できますか?

だから私はこれだけを持つことになります:

        $result = 
        DB::select(
        'orders.date_created'
        )
        ->from('orders') 
                    ->where('user_id', '=', (isset($get['user_id']) ? $get['user_id'] : 'GRAB ALL!'))
        ->execute()->as_array();

または、これを行うための別のさらに良い方法はありますか?

-> if()-> where()-> exitif()..(それがどのように機能するかについての想像力)があるかどうか、Kohanaドキュメントを調べてみました

4

1 に答える 1

1

実行する前に Query オブジェクトを変更できます。

$query = DB::select()->from(...);
if (isset($get['user_id'])) {
    $query->where('user_id', '=', intval($get['user_id']));
}
if (isset($get['quantity'])) {
    $query->where('quantity', '=', floatval($get['quantity']));
}
$result = $query->execute()->as_array();
于 2012-11-15T12:50:01.197 に答える