Skip to content
Snippets Groups Projects
Commit 27edae54 authored by Josh Pollock's avatar Josh Pollock
Browse files

add pagination to select queries

parent 6e413f57
No related branches found
No related tags found
No related merge requests found
...@@ -2,12 +2,7 @@ ...@@ -2,12 +2,7 @@
<project version="4"> <project version="4">
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="8debb13c-dec3-4d96-b552-5550bc63772b" name="Default" comment=""> <list default="true" id="8debb13c-dec3-4d96-b552-5550bc63772b" name="Default" comment="">
<change beforePath="$PROJECT_DIR$/.idea/php.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/php.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/Features/FeatureContainer.php" beforeDir="false" afterPath="$PROJECT_DIR$/src/Features/FeatureContainer.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Tests/Unit/Select/EntryTest.php" beforeDir="false" afterPath="$PROJECT_DIR$/Tests/Unit/Select/EntryTest.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Tests/Unit/SelectQueriesTest.php" beforeDir="false" afterPath="$PROJECT_DIR$/Tests/Unit/SelectQueriesTest.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/composer.lock" beforeDir="false" afterPath="$PROJECT_DIR$/composer.lock" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Select/SelectQueryBuilder.php" beforeDir="false" afterPath="$PROJECT_DIR$/src/Select/SelectQueryBuilder.php" afterDir="false" />
</list> </list>
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" /> <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="TRACKING_ENABLED" value="true" /> <option name="TRACKING_ENABLED" value="true" />
...@@ -20,79 +15,35 @@ ...@@ -20,79 +15,35 @@
<pharConfigPath>$PROJECT_DIR$/composer.json</pharConfigPath> <pharConfigPath>$PROJECT_DIR$/composer.json</pharConfigPath>
</component> </component>
<component name="FileEditorManager"> <component name="FileEditorManager">
<splitter split-orientation="horizontal" split-proportion="0.62331575"> <leaf>
<split-first> <file leaf-file-name="SelectQueryBuilder.php" pinned="false" current-in-tab="false">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300"> <entry file="file://$PROJECT_DIR$/src/Select/SelectQueryBuilder.php">
<file leaf-file-name="DoesSelectQueryByEntryId.php" pinned="false" current-in-tab="false"> <provider selected="true" editor-type-id="text-editor">
<entry file="file://$PROJECT_DIR$/src/Select/DoesSelectQueryByEntryId.php"> <state relative-caret-position="313">
<provider selected="true" editor-type-id="text-editor"> <caret line="51" column="14" selection-start-line="51" selection-start-column="14" selection-end-line="51" selection-end-column="14" />
<state relative-caret-position="225"> </state>
<caret line="15" column="6" selection-start-line="15" selection-start-column="6" selection-end-line="15" selection-end-column="6" /> </provider>
</state> </entry>
</provider> </file>
</entry> <file leaf-file-name="FeatureContainer.php" pinned="false" current-in-tab="true">
</file> <entry file="file://$PROJECT_DIR$/src/Features/FeatureContainer.php">
<file leaf-file-name="SelectQueriesTest.php" pinned="false" current-in-tab="false"> <provider selected="true" editor-type-id="text-editor">
<entry file="file://$PROJECT_DIR$/Tests/Unit/SelectQueriesTest.php"> <state relative-caret-position="695">
<provider selected="true" editor-type-id="text-editor"> <caret line="162" column="41" selection-start-line="162" selection-start-column="41" selection-end-line="162" selection-end-column="41" />
<state relative-caret-position="675"> </state>
<caret line="48" selection-start-line="48" selection-end-line="48" /> </provider>
</state> </entry>
</provider> </file>
</entry> <file leaf-file-name="Select.php" pinned="false" current-in-tab="false">
</file> <entry file="file://$PROJECT_DIR$/vendor/nilportugues/sql-query-builder/src/Manipulation/Select.php">
<file leaf-file-name="EntryTest.php" pinned="false" current-in-tab="true"> <provider selected="true" editor-type-id="text-editor">
<entry file="file://$PROJECT_DIR$/Tests/Unit/Select/EntryTest.php"> <state relative-caret-position="538">
<provider selected="true" editor-type-id="text-editor"> <caret line="390" column="25" selection-start-line="390" selection-start-column="15" selection-end-line="390" selection-end-column="25" />
<state relative-caret-position="173"> </state>
<caret line="35" column="161" selection-start-line="35" selection-start-column="161" selection-end-line="35" selection-end-column="161" /> </provider>
</state> </entry>
</provider> </file>
</entry> </leaf>
</file>
<file leaf-file-name="QueryBuilder.php" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/QueryBuilder.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="457">
<caret line="158" column="64" selection-start-line="158" selection-start-column="64" selection-end-line="158" selection-end-column="64" />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="GenericBuilder.php" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/vendor/nilportugues/sql-query-builder/src/Builder/GenericBuilder.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="722">
<caret line="72" column="37" selection-start-line="72" selection-start-column="37" selection-end-line="72" selection-end-column="37" />
</state>
</provider>
</entry>
</file>
</leaf>
</split-first>
<split-second>
<leaf>
<file leaf-file-name="SelectQueryBuilder.php" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/Select/SelectQueryBuilder.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="198">
<caret line="51" column="14" selection-start-line="51" selection-start-column="14" selection-end-line="51" selection-end-column="14" />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Select.php" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/vendor/nilportugues/sql-query-builder/src/Manipulation/Select.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="538">
<caret line="390" column="25" selection-start-line="390" selection-start-column="15" selection-end-line="390" selection-end-column="25" />
</state>
</provider>
</entry>
</file>
</leaf>
</split-second>
</splitter>
</component> </component>
<component name="FindInProjectRecents"> <component name="FindInProjectRecents">
<findStrings> <findStrings>
...@@ -120,6 +71,8 @@ ...@@ -120,6 +71,8 @@
<option value="$PROJECT_DIR$/Tests/Unit/SelectQueriesTest.php" /> <option value="$PROJECT_DIR$/Tests/Unit/SelectQueriesTest.php" />
<option value="$PROJECT_DIR$/src/Select/SelectQueryBuilder.php" /> <option value="$PROJECT_DIR$/src/Select/SelectQueryBuilder.php" />
<option value="$PROJECT_DIR$/Tests/Unit/Select/EntryTest.php" /> <option value="$PROJECT_DIR$/Tests/Unit/Select/EntryTest.php" />
<option value="$PROJECT_DIR$/src/Features/Queries.php" />
<option value="$PROJECT_DIR$/src/Features/FeatureContainer.php" />
</list> </list>
</option> </option>
</component> </component>
...@@ -210,7 +163,7 @@ ...@@ -210,7 +163,7 @@
<item name="caldera-forms-query" type="b2602c69:ProjectViewProjectNode" /> <item name="caldera-forms-query" type="b2602c69:ProjectViewProjectNode" />
<item name="caldera-forms-query" type="462c0819:PsiDirectoryNode" /> <item name="caldera-forms-query" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" /> <item name="src" type="462c0819:PsiDirectoryNode" />
<item name="Select" type="462c0819:PsiDirectoryNode" /> <item name="Features" type="462c0819:PsiDirectoryNode" />
</path> </path>
<path> <path>
<item name="caldera-forms-query" type="b2602c69:ProjectViewProjectNode" /> <item name="caldera-forms-query" type="b2602c69:ProjectViewProjectNode" />
...@@ -279,12 +232,12 @@ ...@@ -279,12 +232,12 @@
<workItem from="1526560816008" duration="579000" /> <workItem from="1526560816008" duration="579000" />
<workItem from="1526598533921" duration="598000" /> <workItem from="1526598533921" duration="598000" />
<workItem from="1526685882878" duration="434000" /> <workItem from="1526685882878" duration="434000" />
<workItem from="1526730462374" duration="2145000" /> <workItem from="1526730462374" duration="2474000" />
</task> </task>
<servers /> <servers />
</component> </component>
<component name="TimeTrackingManager"> <component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="9967000" /> <option name="totallyTimeSpent" value="10296000" />
</component> </component>
<component name="ToolWindowManager"> <component name="ToolWindowManager">
<frame x="0" y="23" width="1920" height="1057" extended-state="0" /> <frame x="0" y="23" width="1920" height="1057" extended-state="0" />
...@@ -295,8 +248,8 @@ ...@@ -295,8 +248,8 @@
<window_info anchor="bottom" id="Database Changes" order="7" show_stripe_button="false" /> <window_info anchor="bottom" id="Database Changes" order="7" show_stripe_button="false" />
<window_info anchor="bottom" id="Run" order="2" weight="0.3297619" /> <window_info anchor="bottom" id="Run" order="2" weight="0.3297619" />
<window_info anchor="bottom" id="Version Control" order="7" /> <window_info anchor="bottom" id="Version Control" order="7" />
<window_info active="true" anchor="bottom" id="Terminal" order="7" visible="true" weight="0.31770834" /> <window_info anchor="bottom" id="Terminal" order="7" visible="true" weight="0.0" />
<window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.09105431" /> <window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.14376996" />
<window_info anchor="bottom" id="Docker" order="7" show_stripe_button="false" /> <window_info anchor="bottom" id="Docker" order="7" show_stripe_button="false" />
<window_info id="Grunt " order="2" side_tool="true" /> <window_info id="Grunt " order="2" side_tool="true" />
<window_info anchor="right" id="Database" order="3" /> <window_info anchor="right" id="Database" order="3" />
...@@ -459,13 +412,6 @@ ...@@ -459,13 +412,6 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/Features/Queries.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-185">
<caret line="17" column="28" selection-start-line="17" selection-start-column="28" selection-end-line="17" selection-end-column="28" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/Select/DoesSelectQuery.php"> <entry file="file://$PROJECT_DIR$/src/Select/DoesSelectQuery.php">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="210"> <state relative-caret-position="210">
...@@ -501,13 +447,6 @@ ...@@ -501,13 +447,6 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/Features/FeatureContainer.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="446">
<caret line="70" column="29" selection-start-line="70" selection-start-column="29" selection-end-line="70" selection-end-column="29" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/composer.json"> <entry file="file://$PROJECT_DIR$/composer.json">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="259"> <state relative-caret-position="259">
...@@ -549,13 +488,6 @@ ...@@ -549,13 +488,6 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/Select/DoesSelectQueryByEntryId.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="225">
<caret line="15" column="6" selection-start-line="15" selection-start-column="6" selection-end-line="15" selection-end-column="6" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/.gitkeep"> <entry file="file://$PROJECT_DIR$/src/.gitkeep">
<provider selected="true" editor-type-id="text-editor" /> <provider selected="true" editor-type-id="text-editor" />
</entry> </entry>
...@@ -566,45 +498,66 @@ ...@@ -566,45 +498,66 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/QueryBuilder.php"> <entry file="file://$PROJECT_DIR$/vendor/nilportugues/sql-query-builder/src/Manipulation/Select.php">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="457"> <state relative-caret-position="538">
<caret line="158" column="64" selection-start-line="158" selection-start-column="64" selection-end-line="158" selection-end-column="64" /> <caret line="390" column="25" selection-start-line="390" selection-start-column="15" selection-end-line="390" selection-end-column="25" />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/vendor/nilportugues/sql-query-builder/src/Builder/GenericBuilder.php"> <entry file="file://$PROJECT_DIR$/Tests/Unit/Select/EntryTest.php">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="722"> <state relative-caret-position="248">
<caret line="72" column="37" selection-start-line="72" selection-start-column="37" selection-end-line="72" selection-end-column="37" /> <caret line="40" column="31" lean-forward="true" selection-start-line="40" selection-start-column="31" selection-end-line="40" selection-end-column="31" />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/vendor/nilportugues/sql-query-builder/src/Manipulation/Select.php"> <entry file="file://$PROJECT_DIR$/Tests/Unit/SelectQueriesTest.php">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="538"> <state relative-caret-position="675">
<caret line="390" column="25" selection-start-line="390" selection-start-column="15" selection-end-line="390" selection-end-column="25" /> <caret line="48" selection-start-line="48" selection-end-line="48" />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/Tests/Unit/SelectQueriesTest.php"> <entry file="file://$PROJECT_DIR$/src/Select/DoesSelectQueryByEntryId.php">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="675"> <state relative-caret-position="225">
<caret line="48" selection-start-line="48" selection-end-line="48" /> <caret line="15" column="6" selection-start-line="15" selection-start-column="6" selection-end-line="15" selection-end-column="6" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/QueryBuilder.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="457">
<caret line="158" column="64" selection-start-line="158" selection-start-column="64" selection-end-line="158" selection-end-column="64" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/vendor/nilportugues/sql-query-builder/src/Builder/GenericBuilder.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="722">
<caret line="72" column="37" selection-start-line="72" selection-start-column="37" selection-end-line="72" selection-end-column="37" />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/Select/SelectQueryBuilder.php"> <entry file="file://$PROJECT_DIR$/src/Select/SelectQueryBuilder.php">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="198"> <state relative-caret-position="313">
<caret line="51" column="14" selection-start-line="51" selection-start-column="14" selection-end-line="51" selection-end-column="14" /> <caret line="51" column="14" selection-start-line="51" selection-start-column="14" selection-end-line="51" selection-end-column="14" />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/Tests/Unit/Select/EntryTest.php"> <entry file="file://$PROJECT_DIR$/src/Features/Queries.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="480">
<caret line="76" column="33" selection-start-line="76" selection-start-column="33" selection-end-line="76" selection-end-column="33" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/Features/FeatureContainer.php">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="173"> <state relative-caret-position="695">
<caret line="35" column="161" selection-start-line="35" selection-start-column="161" selection-end-line="35" selection-end-column="161" /> <caret line="162" column="41" selection-start-line="162" selection-start-column="41" selection-end-line="162" selection-end-column="41" />
</state> </state>
</provider> </provider>
</entry> </entry>
......
...@@ -20,6 +20,8 @@ This library provides for developer-friendly ways to query for or delete Caldera ...@@ -20,6 +20,8 @@ This library provides for developer-friendly ways to query for or delete Caldera
* **Prepared SQL needs to be sanitized better.** * **Prepared SQL needs to be sanitized better.**
## Usage ## Usage
### Basic Queries
```php ```php
/** /**
* Examples of simple queries * Examples of simple queries
...@@ -49,6 +51,33 @@ CalderaFormsQueries()->deleteByUserId(42); ...@@ -49,6 +51,33 @@ CalderaFormsQueries()->deleteByUserId(42);
``` ```
### Paginated Queries
The selectByFieldValue feature method defaults to limiting queries to 25. You can set the page and limit with the 4th & 5th arguments.
```php
/**
* Examples of simple queries
*
* Using the class: \calderawp\CalderaFormsQuery\Features\FeatureContainer
* Via the static accessor function: calderawp\CalderaFormsQueries\CalderaFormsQueries()
*/
/** First make the function usable without a full namespace */
use function calderawp\CalderaFormsQueries\CalderaFormsQueries;
/** Do Some Queries */
//Select all entries that have a field whose slug is "email" and the value of that field's value is "delete@please.eu"
//The first 25 entries
$entries = CalderaFormsQueries()->selectByFieldValue( 'email', 'delete@please.eu' );
//The second 25 entries
$entries = CalderaFormsQueries()->selectByFieldValue( 'email', 'delete@please.eu', true, 2 );
//Get 5th page, with 50 results per page
$entries = CalderaFormsQueries()->selectByFieldValue( 'email', 'delete@please.eu', true, 5, 50 );
```
## Development ## Development
### Install ### Install
Requires git and Composer Requires git and Composer
......
...@@ -141,12 +141,13 @@ class FeatureContainer extends Container ...@@ -141,12 +141,13 @@ class FeatureContainer extends Container
* *
* @return array * @return array
*/ */
public function selectByFieldValue($fieldSlug, $fieldValue, $have = true) public function selectByFieldValue($fieldSlug, $fieldValue, $have = true, $page = 1, $limit = 25 )
{ {
$type = $have ? 'equals' : 'notEquals'; $type = $have ? 'equals' : 'notEquals';
$queryForEntryValues = $this $queryForEntryValues = $this
->getQueries() ->getQueries()
->entryValuesSelect() ->entryValuesSelect()
->addPagination($page,$limit)
->queryByFieldValue($fieldSlug, $fieldValue, $type, 'AND', [ ->queryByFieldValue($fieldSlug, $fieldValue, $type, 'AND', [
'entry_id' 'entry_id'
]); ]);
...@@ -159,7 +160,8 @@ class FeatureContainer extends Container ...@@ -159,7 +160,8 @@ class FeatureContainer extends Container
$queryForValues = $this $queryForValues = $this
->getQueries() ->getQueries()
->entrySelect() ->entrySelect()
->queryByEntryIds($results); ->addPagination($page,$limit)
->queryByEntryIds($results);
return $this->collectResults($this->select($queryForValues)); return $this->collectResults($this->select($queryForValues));
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment