sql >> データベース >  >> RDS >> Mysql

デフォルトのページネーションを上書きせずにカスタムクエリをページネーションできますか?

    実際、あなたがそれを見つけることができれば、あなたはパジネートでそれを行うことができます。 こちら をご覧ください。

    ただし、より具体的には、検索で使用する条件/制限/フィールド/包含/順序などをページネーション関数に追加できます。

    私はpaginateでグループを使用していませんが、機能する必要があります:D

    あなたの場合、次のようなものになります:

    $this->paginate = array(
       'fields' => array(
            'Product.category_id',
            'COUNT(Product.hotel_id) as total'
        ),
       'group' => array(
            'Product.category_id HAVING COUNT(Product.hotel_id) > 1')
        )
    );
    
    $data = $this->paginate('Product');
    

    それがうまくいくことを願って、あなたの結果のコメントを投稿してください、それがうまくいかない場合は、グループ条件を受け入れていないので、それをオーバーライドする必要があります...

    編集:

    あなたはこのようなことをしようとするかもしれません:

    paginate()とpaginateCount()をオーバーライドしますが、微調整を加えて条件をスニークし、ページ付けがあるかどうかを判断できるようにします。このようなもの:

    function paginate($conditions, $fields, $order, $limit, $page = 1, $recursive = null, $extra = array()){
       //if no having conditions set return the parent paginate 
       if (empty($conditions['having'])
           return parent::paginate($conditions, $fields, $order, $limit, $page, $recursive, $extra)
       //if having conditions set return your override
    
    //override code here
    
    }
    

    次に、paginateCount()で同様のことを行います。これにより、選択的なpaginateが作成されます。不要になったら$conditions['having']を設定解除することを忘れないでください。または、検索に影響を与えない場所に置くことを忘れないでください;)



    1. MySQLユーティリティ-〜/.my.cnfオプションファイル

    2. Laravel 4:EloquentクラスのすべてのクエリにWHERE条件を適用するにはどうすればよいですか?

    3. 同じ値のブロックに属する値を分離せずに、いくつかの一意の値を取得します

    4. ユーザー、スレッド、および投稿のステータスを使用して、より高度なモデルを作成する