現在、私は次の方法を使用しています。
$claims = ClaimQuery::create()
->leftJoinUser()
->withColumn('CONCAT(User.Firstname, " ", User.Lastname)', 'name')
->withColumn('User.Email', 'email')
->filterByArray($conditions)
->paginate($page = $page, $maxPerPage = $top);
$ conditionは、セッション内の値へのキーによって入力される動的配列です。
$_SESSION['filters']['claims'][$filter] = $value;
$ _SESSION['filters']['claims']が配列です。ただし、filterByArrayは、1つの列を1つの値に単純にマッピングするように制限されているように見えるため、これは実際には十分な柔軟性がありません。
データベースのcreated_at列を2回使用して、より小さい値とより大きい値を設定できるようにfilterByArrayを使用する方法はありますか、それとも以下のような基準を使用するなど、クエリを動的に構築するためのより良い方法がありますか?
$criteria = new Criteria();
$criteria->add(ClaimPeer::Status, $status);
これが事実である場合、paginateメソッドにアクセスするための最良の方法は何ですか?