私は改ページにどこ句を追加したいときに私は問題を持っている:ページネーションとwhere句
これは正常に動作します:
$builder = User::orderBy(
$criteria->getOrderBy(),
$criteria->getOrderWay()
)
->paginate(
$criteria->getPerPage(),
array('*'),
'',
$criteria->getPage()
);
return $builder;
私はどこ条件IはI場合はすることができます追加したい場合(これはところで動作します)次の手順を実行します。
$builder = User::orderBy(
$criteria->getOrderBy(),
$criteria->getOrderWay()
)->where(array(array('state','=',0)))
->paginate(
$criteria->getPerPage(),
array('*'),
'',
$criteria->getPage()
);
return $builder;
しかし、私は連鎖することなく、これをしたい場合:
$builder = User::orderBy(
$criteria->getOrderBy(),
$criteria->getOrderWay()
);
$builder->where(array(array('state','=',0)));
$builder->paginate(
$criteria->getPerPage(),
array('*'),
'',
$criteria->getPage()
);
return $builder;
私は、次の例外を取得:未定義のメソッドを照らし\ Databaseへ
コール\クエリー\ビルダー:: LASTPAGE()
だから改ページは適用されますが、なぜされていませんか?
このようなコードを複製せずにwhere節を追加するにはどうすればよいですか?
$arrClauses = /** example **/;
if(empty($arrClauses)) {
$builder = User::orderBy(
$criteria->getOrderBy(),
$criteria->getOrderWay()
)
->paginate(
$criteria->getPerPage(),
array('*'),
'',
$criteria->getPage()
);
return $builder;
} else {
$builder = User::orderBy(
$criteria->getOrderBy(),
$criteria->getOrderWay()
)->where($arrClauses)
->paginate(
$criteria->getPerPage(),
array('*'),
'',
$criteria->getPage()
);
return $builder;
}
を助けることを願っていますそれが連鎖するのではなく、変数に格納しようとしているかどうかを知ってください。 $ builder = $ builder-> where(... –
はい、うまくいっていて、インスタンスを取得しなければならなかった –