diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 189414ba7f714498c5b0e12d4cb58bd2e382d128..5d0974e775ff33ad5a27d531e74c711e4b85e3bd 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -2,8 +2,8 @@ <project version="4"> <component name="ChangeListManager"> <list default="true" id="8debb13c-dec3-4d96-b552-5550bc63772b" name="Default" comment=""> + <change beforePath="$PROJECT_DIR$/README.md" beforeDir="false" afterPath="$PROJECT_DIR$/README.md" afterDir="false" /> <change beforePath="$PROJECT_DIR$/Tests/plugins/caldera-forms" beforeDir="false" afterPath="$PROJECT_DIR$/Tests/plugins/caldera-forms" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/src/QueryBuilder.php" beforeDir="false" afterPath="$PROJECT_DIR$/src/QueryBuilder.php" afterDir="false" /> </list> <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" /> <option name="TRACKING_ENABLED" value="true" /> @@ -19,11 +19,11 @@ <splitter split-orientation="horizontal" split-proportion="0.5282903"> <split-first> <leaf> - <file leaf-file-name="QueryBuilder.php" pinned="false" current-in-tab="true"> - <entry file="file://$PROJECT_DIR$/src/QueryBuilder.php"> + <file leaf-file-name="scratch.php" pinned="false" current-in-tab="false"> + <entry file="file://$APPLICATION_CONFIG_DIR$/scratches/scratch.php"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="340"> - <caret line="170" column="11" selection-start-line="170" selection-start-column="11" selection-end-line="170" selection-end-column="11" /> + <state relative-caret-position="105"> + <caret line="7" selection-start-line="7" selection-end-line="12" selection-end-column="27" /> </state> </provider> </entry> @@ -33,18 +33,27 @@ <provider selected="true" editor-type-id="text-editor" /> </entry> </file> - <file leaf-file-name="README.md" pinned="false" current-in-tab="false"> + <file leaf-file-name="README.md" pinned="false" current-in-tab="true"> <entry file="file://$PROJECT_DIR$/README.md"> <provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]"> <state split_layout="FIRST"> - <first_editor relative-caret-position="323"> - <caret line="73" column="3" selection-start-line="73" selection-start-column="3" selection-end-line="73" selection-end-column="3" /> + <first_editor relative-caret-position="281"> + <caret line="91" column="21" selection-start-line="91" selection-start-column="21" selection-end-line="91" selection-end-column="21" /> </first_editor> <second_editor /> </state> </provider> </entry> </file> + <file leaf-file-name="SelectQueryBuilder.php" pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/src/Select/SelectQueryBuilder.php"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="105"> + <caret line="8" column="107" lean-forward="true" selection-start-line="8" selection-start-column="66" selection-end-line="8" selection-end-column="107" /> + </state> + </provider> + </entry> + </file> </leaf> </split-first> <split-second> @@ -52,8 +61,8 @@ <file leaf-file-name="FeatureContainer.php" pinned="false" current-in-tab="true"> <entry file="file://$PROJECT_DIR$/src/Features/FeatureContainer.php"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="177"> - <caret line="308" column="21" selection-start-line="308" selection-start-column="21" selection-end-line="308" selection-end-column="21" /> + <state relative-caret-position="357"> + <caret line="320" column="7" selection-start-line="320" selection-start-column="7" selection-end-line="320" selection-end-column="7" /> </state> </provider> </entry> @@ -101,9 +110,10 @@ <option value="$PROJECT_DIR$/src/Select/SelectQueryBuilder.php" /> <option value="$PROJECT_DIR$/Tests/Unit/Select/EntryTest.php" /> <option value="$PROJECT_DIR$/src/Features/Queries.php" /> - <option value="$PROJECT_DIR$/README.md" /> <option value="$PROJECT_DIR$/src/Features/FeatureContainer.php" /> <option value="$PROJECT_DIR$/src/QueryBuilder.php" /> + <option value="$APPLICATION_CONFIG_DIR$/scratches/scratch.php" /> + <option value="$PROJECT_DIR$/README.md" /> </list> </option> </component> @@ -208,6 +218,15 @@ <item name="src" type="462c0819:PsiDirectoryNode" /> <item name="Select" type="462c0819:PsiDirectoryNode" /> </path> + <path> + <item name="caldera-forms-query" type="b2602c69:ProjectViewProjectNode" /> + <item name="Scratches and Consoles" type="1a2a3e82:ScratchProjectViewPane$MyProjectNode" /> + </path> + <path> + <item name="caldera-forms-query" type="b2602c69:ProjectViewProjectNode" /> + <item name="Scratches and Consoles" type="1a2a3e82:ScratchProjectViewPane$MyProjectNode" /> + <item name="Scratches" type="d62648e6:ScratchProjectViewPane$MyRootNode" /> + </path> </expand> <select /> </subPane> @@ -217,9 +236,10 @@ </component> <component name="PropertiesComponent"> <property name="WebServerToolWindowFactoryState" value="false" /> + <property name="com.intellij.ide.scratch.LRUPopupBuilder$1/New Scratch File" value="PHP" /> <property name="last_opened_file_path" value="$PROJECT_DIR$" /> <property name="nodejs_package_manager_path" value="npm" /> - <property name="settings.editor.selected.configurable" value="fileTemplates" /> + <property name="settings.editor.selected.configurable" value="reference.idesettings.emmet" /> </component> <component name="RunDashboard"> <option name="ruleStates"> @@ -255,7 +275,7 @@ <servers /> </component> <component name="TimeTrackingManager"> - <option name="totallyTimeSpent" value="13885000" /> + <option name="totallyTimeSpent" value="15118000" /> </component> <component name="ToolWindowManager"> <frame x="0" y="23" width="1920" height="1057" extended-state="0" /> @@ -303,13 +323,6 @@ <option name="myLimit" value="2678400000" /> </component> <component name="editorHistoryManager"> - <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$/vendor/nilportugues/sql-query-builder/src/Manipulation/Select.php"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="538"> @@ -553,16 +566,6 @@ </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/README.md"> - <provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]"> - <state split_layout="FIRST"> - <first_editor relative-caret-position="323"> - <caret line="73" column="3" selection-start-line="73" selection-start-column="3" selection-end-line="73" selection-end-column="3" /> - </first_editor> - <second_editor /> - </state> - </provider> - </entry> <entry file="file://$PROJECT_DIR$/src/Select/DoesSelectQueryByValue.php"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="450"> @@ -608,38 +611,58 @@ </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/src/Features/FeatureContainer.php"> + <entry file="file://$PROJECT_DIR$/src/Select/ValueSelectQueryBuilder.php"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="177"> - <caret line="308" column="21" selection-start-line="308" selection-start-column="21" selection-end-line="308" selection-end-column="21" /> + <state relative-caret-position="75"> + <caret line="5" column="15" selection-start-line="5" selection-start-column="15" selection-end-line="5" selection-end-column="15" /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/src/Select/SelectQueryBuilder.php"> + <entry file="file://$PROJECT_DIR$/src/Select/EntryValues.php"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="420"> - <caret line="29" column="22" selection-start-line="29" selection-start-column="22" selection-end-line="29" selection-end-column="22" /> + <state relative-caret-position="150"> + <caret line="10" column="41" lean-forward="true" selection-start-line="10" selection-start-column="41" selection-end-line="10" selection-end-column="41" /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/src/Select/ValueSelectQueryBuilder.php"> + <entry file="file://$PROJECT_DIR$/src/Features/FeatureContainer.php"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="75"> - <caret line="5" column="15" selection-start-line="5" selection-start-column="15" selection-end-line="5" selection-end-column="15" /> + <state relative-caret-position="357"> + <caret line="320" column="7" selection-start-line="320" selection-start-column="7" selection-end-line="320" selection-end-column="7" /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/src/Select/EntryValues.php"> + <entry file="file://$PROJECT_DIR$/src/QueryBuilder.php"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="150"> - <caret line="10" column="41" lean-forward="true" selection-start-line="10" selection-start-column="41" selection-end-line="10" selection-end-column="41" /> + <state relative-caret-position="57"> + <caret line="5" column="4" lean-forward="true" selection-start-line="5" selection-start-column="4" selection-end-line="5" selection-end-column="4" /> + <folding> + <element signature="e#48#101#0#PHP" expanded="true" /> + </folding> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/src/QueryBuilder.php"> + <entry file="file://$PROJECT_DIR$/src/Select/SelectQueryBuilder.php"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="340"> - <caret line="170" column="11" selection-start-line="170" selection-start-column="11" selection-end-line="170" selection-end-column="11" /> + <state relative-caret-position="105"> + <caret line="8" column="107" lean-forward="true" selection-start-line="8" selection-start-column="66" selection-end-line="8" selection-end-column="107" /> + </state> + </provider> + </entry> + <entry file="file://$APPLICATION_CONFIG_DIR$/scratches/scratch.php"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="105"> + <caret line="7" selection-start-line="7" selection-end-line="12" selection-end-column="27" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/README.md"> + <provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]"> + <state split_layout="FIRST"> + <first_editor relative-caret-position="281"> + <caret line="91" column="21" selection-start-line="91" selection-start-column="21" selection-end-line="91" selection-end-column="21" /> + </first_editor> + <second_editor /> </state> </provider> </entry> diff --git a/README.md b/README.md index e83640431368e69d02eca620119001331b944aff..4e9edf0620e2259664c974a2a894817f3ae46fe9 100644 --- a/README.md +++ b/README.md @@ -73,6 +73,57 @@ $entries = CalderaFormsQueries()->selectByFieldValue( 'email', 'delete@please.eu $entries = CalderaFormsQueries()->selectByFieldValue( 'email', 'delete@please.eu', true, 5, 50 ); ``` +## Constructing Other Queries +The feature container provides helper methods that allow for simple queries like those listed above. It also exposes the underlying query generators. + +You can access any of the generators using the `getQueries()` method. For example: + +```php + $featureContainer = \calderawp\CalderaFormsQueries\CalderaFormsQueries(); + $fieldValue = 'X@x.com'; + $formId = 'CF5afb00e97d698'; + $count = Caldera_Forms_Entry_Bulk::count($formId ); + + $entrySelector = $featureContainer + ->getQueries() + ->entrySelect(); +``` + +#### `is()` Helper Method +This is a more complete example showing a selection of entry values where the field with the slug `primary_email` is `roy@hiroy.club` and the field with the slug of `first_name` is `Mike`. It is also using the `is()` method to add WHERE statements, as well as the `addPagination()` method to query for the second page of results with 50 results per page. + +```php + $featureContainer = \calderawp\CalderaFormsQueries\CalderaFormsQueries(); + $entrySelector = $featureContainer + ->getQueries() + ->entrySelect() + ->is( 'primary_email', 'roy@hiroy.club' ) + ->is( 'first_name', 'Mike' ) + ->addPagination(2,50 ); +``` + +#### `in()` Helper Method +This example shows selection of all entry values where the entry ID is in an array of entry IDs. + +```php + $featureContainer = \calderawp\CalderaFormsQueries\CalderaFormsQueries(); + $entrySelector = $featureContainer + ->getQueries() + ->entrySelect() + ->in( 'entry_id', [ 42, 3 ] ); +``` + +### Query Generators +All query generators extend the `\calderawp\CalderaFormsQuery\QueryBuilder` class and impairment `\calderawp\CalderaFormsQuery\CreatesSqlQueries`. + +Query generators are responsible for creating SQL queries. They do not perform sequel queries. +#### Select Query Generators +Select query generators extend `\calderawp\CalderaFormsQuery\Select\SelectQueryBuilder` and impliment `\calderawp\CalderaFormsQuery\Select\DoesSelectQuery` and `\calderawp\CalderaFormsQuery\Select\DoesSelectQueryByEntryId`. + +#### Useful Methods of `SelectQueryBuilder`s + +* `in()` + ## Development ### Install Requires git and Composer