Kaizen #98 - Query API using v5 PHP SDK

Kaizen #98 - Query API using v5 PHP SDK

Hello and welcome to another week of Kaizen!

In our previous posts, we have already covered in detail about Query API, when to use them and their supported fields and operators with examples. Please refer to COQL API [Part I] and COQL API [Part II] for more details. In this week's post, we will discuss in detail how to use Query API in Zoho CRM PHP SDK. Please note that this article holds true for PHP SDK supporting version 5 of Zoho CRM APIs.

COQL (CRM Object Query Language) is a powerful query language based on SQL syntax that allows users to write their own queries and fetch records using module API names and field API names. Use Query API when you want to query for a module's data and/or it's look up related data using various comparators, or for records that fall into a custom view without actually creating one, or to query for records from cross-modules (linked via lookup field). 

How to construct a simple Query?

  1. Begin with the SELECT clause
  2. Specify the fields you want to fetch.
  3. Use the FROM clause to specify the module you are querying.
  4. Use the WHERE clause to apply conditions and filter the results based on specific criteria.
  5. Specify the conditions.
  6. Utilize additional clauses such as GROUP BY, ORDER BY, LIMIT, and OFFSET to further customize the query results if needed.

For example,
SELECT Last_Name, First_Name, Mobile FROM Leads WHERE (Lead_Status = 'Not Contacted') ORDER BY Last_Name DESC LIMIT 5 OFFSET 10;

COQL API using PHP SDK

To make a query, use the following code snippet in your code.

// Instantiate QueryOperations class
$queryOperations = new QueryOperations();
// Create a new BodyWrapper instance to set the query
$bodyWrapper = new BodyWrapper();
// Define your COQL select query
$selectQuery = "give_your_select_query_here";
// Set the select query in the body wrapper
$bodyWrapper->setSelectQuery($selectQuery);
// Execute the query and get the response
$response = $queryOperations->getRecords($bodyWrapper);


Let us explore in detail with examples how to use COQL for various field types and operators.

I. Text and Picklist Fields

The supported operators for Text and Picklist fields are =, !=, like, not like, in, not in, is null, is not null.

Sample code using =, like, in operators
<?php

use com\zoho\crm\api\query\BodyWrapper;
use com\zoho\crm\api\query\QueryOperations;
require_once "vendor/autoload.php";

class GetRecords
{
    public static function initialize()
    {
        // add initialisation code
        // refer to this post for details and examples 
    }
    public static function getRecords1()
    {
        $queryOperations = new QueryOperations();
        $bodyWrapper = new BodyWrapper();
        $selectQuery =
            "SELECT First_Name, Last_Name FROM Leads WHERE (((Lead_Status = 'Attempted to Contact') and (Company like '%zylker%')) and Lead_Source in ('Employee Referral', 'Advertisement')) LIMIT 5 OFFSET 10";
        $bodyWrapper->setSelectQuery($selectQuery);
        $response = $queryOperations->getRecords($bodyWrapper);
        //Add your code to handle the response received in $response. To know more, refer to this sample code.
    }
}
GetRecords::initialize();
GetRecords::getRecords1();
?>


Please note that the like operator is used for pattern matching, and is used for starts_with, ends_with, and  contains operators. In this example query, LIKE operator with the pattern %zylker% is used to find records where the Company field contains the substring zylker anywhere within its value. The % symbol represents any number of characters (including none) before or after the pattern zylker. % is the only supported wildcard character for Zoho CRM Query APIs. 

II. Lookup Fields

The supported operators for Lookup fields are =, !=, in, not in, is null, is not null.

Sample Query using !=, is not, not in, is not null

<?php
use com\zoho\crm\api\query\BodyWrapper;
use com\zoho\crm\api\query\QueryOperations;
require_once "vendor/autoload.php";

class GetRecords
{
    public static function initialize()
    {
        // add initialisation code
         // refer to this post for details and examples 
    }
    public static function getRecords1()
    {
        $queryOperations = new QueryOperations();
        $bodyWrapper = new BodyWrapper();
       $selectQuery = "SELECT Last_Name, First_Name, Full_Name, Account_Name, Owner from Contacts where (((Account_Name.Account_Name != 'Zylker') and (Reporting_To is not null)) and Vendor_Name.Vendor_Name not in ('Skytech','SR'))";
        $bodyWrapper->setSelectQuery($selectQuery);
        $response = $queryOperations->getRecords($bodyWrapper);
         //Add your code to handle the response received in $response. To know more, refer to this sample code.
    }
}
GetRecords::initialize();
GetRecords::getRecords1();
?>

III. Date, DateTime, Number, Currency Fields

=, !=, >=, >, <=, <, between, not between, in, not in, is null, is not null are the supported operators for these fields.

Sample Query using between, <, >, >=

<?php

use com\zoho\crm\api\query\BodyWrapper;
use com\zoho\crm\api\query\QueryOperations;
require_once "vendor/autoload.php";

class GetRecords
{
    public static function initialize()
    {
        // add initialisation code
         // refer to this post for details and examples 
    }
    public static function getRecords1()
    {
        $queryOperations = new QueryOperations();
        $bodyWrapper = new BodyWrapper();
       $selectQuery = "SELECT Deal_Name, Amount, Stage, Probability FROM Deals WHERE ((Closing_Date between '2023-01-01' and '2023-03-31') and (Probability < 99)) and ((Amount > 10000) OR (Exchange_Rate >= 5))";
        $bodyWrapper->setSelectQuery($selectQuery);
        $response = $queryOperations->getRecords($bodyWrapper);
         //Add your code to handle the response received in $response. To know more, refer to this sample code.
    }
}
GetRecords::initialize();
GetRecords::getRecords1();
?>


Note : 
Use the following formats for Date and DateTime fields.
Date : YYYY-MM-DD (eg: 2023-01-01)
DateTime : YYYY-MMDDTHH:mm:ss+/HH:mm (eg: 2023-05-03T20:39:19+05:30)

IV. Boolean

= is the only supported operator for Boolean Fields. You should provide the value as either true or false.

<?php

use com\zoho\crm\api\query\BodyWrapper;
use com\zoho\crm\api\query\QueryOperations;
require_once "vendor/autoload.php";

class GetRecords
{
    public static function initialize()
    {
        // add initialisation code
         // refer to this post for details and examples 
    }
    public static function getRecords1()
    {
        $queryOperations = new QueryOperations();
        $bodyWrapper = new BodyWrapper();
       $selectQuery = "select Product_Name, Product_Code from Products where Product_Active = 'true'";
        $bodyWrapper->setSelectQuery($selectQuery);
        $response = $queryOperations->getRecords($bodyWrapper);
        //Add your code to handle the response received in $response. To know more, refer to this sample code.
    }
}
GetRecords::initialize();
GetRecords::getRecords1();
?>

Aggregate Function Support 

Aggregate functions in COQL allow you to perform calculations on groups of records in a module. The available aggregate functions are SUM, MIN, MAX, AVG, and COUNT.
  • SUM is used to sum up the values of an aggregate field in a module.
  • MAX is used to find the largest value of a field in a module.
  • MIN is used to find the smallest value of a field in a module.]
  • AVG is used to find the average value of a field in a module.
  • COUNT is used to count the number of records in a module satisfying a certain criteria.
This feature allows users to perform complex queries on their data and get insights that would not be possible with simple SELECT queries. For example, you could use aggregate functions to find the total revenue generated by all leads in a month, or the average age of all customers in a region.

<?php

use com\zoho\crm\api\query\BodyWrapper;
use com\zoho\crm\api\query\QueryOperations;
require_once "vendor/autoload.php";

class GetRecords
{
    public static function initialize()
    {
        // add initialisation code
         // refer to this post for details and examples 
    }
    public static function getRecords1()
    {
        $queryOperations = new QueryOperations();
        $bodyWrapper = new BodyWrapper();
       $selectQuery = "SELECT MIN(Amount), MAX(Amount) FROM Deals WHERE Stage = 'Closed Won'";
        $bodyWrapper->setSelectQuery($selectQuery);
        $response = $queryOperations->getRecords($bodyWrapper);
        //Add your code to handle the response received in $response. To know more, refer to this sample code.
    }
}
GetRecords::initialize();
GetRecords::getRecords1();
?>

This query will return the minimum and maximum deal amounts for all deals that have been closed won.

In this guide, we've explored how to use the Query API within Zoho CRM using PHP SDK effectively. By employing COQL, you can create intricate queries to extract specific data from modules, apply various operators, and even utilize aggregate functions for deeper insights. Whether you're seeking lead details, complex filters, or aggregate calculations, Query API empowers you to interact with your CRM data seamlessly. 

If you have any queries, let us know the comments below, or send an email to support@zohocrm.com. We would love to hear from you. Your commitment to Kaizen drives us forward!!

Stay tuned for more useful posts in the series! 


    Access your files securely from anywhere









                          Zoho Developer Community




                                                • Desk Community Learning Series


                                                • Digest


                                                • Functions


                                                • Meetups


                                                • Kbase


                                                • Resources


                                                • Glossary


                                                • Desk Marketplace


                                                • MVP Corner


                                                • Word of the Day


                                                • Ask the Experts





                                                          Manage your brands on social media



                                                                Zoho TeamInbox Resources



                                                                    Zoho CRM Plus Resources

                                                                      Zoho Books Resources


                                                                        Zoho Subscriptions Resources

                                                                          Zoho Projects Resources


                                                                            Zoho Sprints Resources


                                                                              Qntrl Resources


                                                                                Zoho Creator Resources



                                                                                    Zoho CRM Resources

                                                                                    • CRM Community Learning Series

                                                                                      CRM Community Learning Series


                                                                                    • Kaizen

                                                                                      Kaizen

                                                                                    • Functions

                                                                                      Functions

                                                                                    • Meetups

                                                                                      Meetups

                                                                                    • Kbase

                                                                                      Kbase

                                                                                    • Resources

                                                                                      Resources

                                                                                    • Digest

                                                                                      Digest

                                                                                    • CRM Marketplace

                                                                                      CRM Marketplace

                                                                                    • MVP Corner

                                                                                      MVP Corner







                                                                                        Design. Discuss. Deliver.

                                                                                        Create visually engaging stories with Zoho Show.

                                                                                        Get Started Now


                                                                                          Zoho Show Resources

                                                                                            Zoho Writer

                                                                                            Get Started. Write Away!

                                                                                            Writer is a powerful online word processor, designed for collaborative work.

                                                                                              Zoho CRM コンテンツ






                                                                                                Nederlandse Hulpbronnen


                                                                                                    ご検討中の方




                                                                                                          • Recent Topics

                                                                                                          • Billing Management: #6 Usage Billing in SaaS

                                                                                                            Imagine a customer shuffling across multiple subscriptions, a streaming service, a music app, cloud storage, and a design tool. Each one charges a flat monthly fee, regardless of how much or how little they use. Some months, the customer barely opens
                                                                                                          • Is there anyone who has been experiencing issues regarding the Zoho Creator Certification Website in the past 2 weeks?

                                                                                                            Dear all , I just wanted to ask is there anyone who was planning on taking the Zoho Creator Developer Certification Test in the past 2 weeks and have been facing errors stating that the website is under maintennance and also not allowed to access the
                                                                                                          • Directly Edit, Filter, and Sort Subforms on the Details Page

                                                                                                            Hello everyone, As you know, subforms allow you to associate multiple line items with a single record, greatly enhancing your data organization. For example, a sales order subform neatly lists all products, their quantities, amounts, and other relevant
                                                                                                          • Allow syncing Activities from other applications

                                                                                                            Marketing Automation could be a much more powerful platform if you were able to sync activities into the platform (e.g. purchase, donation, etc) outside of a user doing something on your website. I'd love it if you could sync Custom CRM Modules as activities,
                                                                                                          • Create static subforms in Zoho CRM: streamline data entry with pre-defined values

                                                                                                            Last modified on (9 July, 2025): This feature was available in early access and is currently being rolled out to customers in phases. Currently available for users in the the AU, CA, and SA DCs. It will be enabled for the remaining DCs in the next couple
                                                                                                          • Global Sets for Multi-Select pick lists

                                                                                                            When is this feature coming to Zoho CRM? It would be very useful now we have got used to having it for the normal pick lists.
                                                                                                          • Introducing Profile Summary: Faster Candidate Insights with Zia

                                                                                                            We’re excited to launch Profile Summary, a powerful new feature in Zoho Recruit that transforms how you review candidate profiles. What used to take minutes of resume scanning can now be assessed in seconds—thanks to Zia. A Quick Example Say you’re hiring
                                                                                                          • Integración Books para cumplir la ley Crea y Crece y Ley Antifraude (VeriFactu)

                                                                                                            Hola: En principio, en julio de 2025, entra en vigor la ley Crea y Crece y Ley Antifraude (VeriFactu). ¿Sabéis si Zoho va a cumplir con la ley para cumplir con la facturación electrónica conectada a Hacienda? Gracias
                                                                                                          • Ask the Experts #1

                                                                                                            Hello everyone! It’s time to transform how you manage projects. Define the processes. Automate the tasks. Streamline the workflows. Let us dive into automation in Zoho Projects — from configuring workflows and custom functions to building triggers, using
                                                                                                          • How to overcome Zoho Deluge's time limit?

                                                                                                            I have built a function according to the following scheme: pages = {1,2,3,4,5,6,7,8,9,10}; for each page in pages { entriesPerPage = zoho.crm.getRecords("Accounts",page,200); for each entry in entriesPerPage { … } } Unfortunately, we have too many entries
                                                                                                          • Checking if Creator has Change History

                                                                                                            Like zForms - whenever an entry was updated there's an option to attached change history to email notif. Trigger -> Successful form submission
                                                                                                          • how to use validation rules in subform

                                                                                                            Is it possible to use validation rules for subforms? I tried the following code: entityMap = crmAPIRequest.toMap().get("record"); sum = 0; direct_billing = entityMap.get("direct_billing_details"); response = Map(); for each i in direct_billing { if(i.get("type")
                                                                                                          • Adding contact role to a specific deal js sdk malfunctioning

                                                                                                            i was trying to add the contact role to a specific deal contact but repeatedly i am getting this error: { "code": "SUCCESS", "details": { "statusMessage": { "code": "INVALID_DATA", "details": { "expected_data_type": "jsonobject" }, "message": "body",
                                                                                                          • Q3 Updates from Bigin!

                                                                                                            Hey Biginners, Hope you’re doing great! As we approach the end of 2025, we truly hope Bigin has been a part of helping you build your dream business this year! We've been busy working behind the scenes to bring you features that make running your business
                                                                                                          • New Series Announcement - Ecommerce Marketing Tips

                                                                                                            Running an online business is more than just having a website. It’s about getting the right customers to discover you, trust you, and keep coming back. To support your growth journey, we’re launching a weekly Marketing Tips series right here on Zoho Commerce
                                                                                                          • Client Script | Update - Introducing Subform Events and Actions

                                                                                                            Are you making the most of your subforms in Zoho CRM? Do you wish you could automate subform interactions and enhance user experience effortlessly? What if you had Client APIs and events specifically designed for subforms? We are thrilled to introduce
                                                                                                          • {"errors":[{"id":"500","title":"Servlet execution threw an exception"}]}

                                                                                                            Here's the call to move a file to trash. The resource_id is accurate and the file is present. header = Map(); header.put("Accept","application/vnd.api+json"); data = Map(); data_param1 = Map(); att_param1 = Map(); att_param1.put("status",51); data_param1.put("attributes",att_param1);
                                                                                                          • Converting Sales Order to Invoice via API; Problem with decimal places tax

                                                                                                            We are having problems converting a Sales Order to an Invoice via API Call. The cause of the issue is, that the Tax value in a Sales Order is sometimes calculated with up to 16 decimal places (e.g. 0.8730000000000001). The max decimal places allowed in
                                                                                                          • Zoho Canvas - Custom templates for related lists

                                                                                                            Hi, I see that the example pages load always one of our related lists in a custom template, but I dont know how to work with that:  1) How can i make my own custom templates for related lists?  2) Where and how can i check out existing custom templates?
                                                                                                          • Kaizen #147 - Frequently Asked Questions on Zoho CRM Widgets

                                                                                                            Heya! It's Kaizen time again, folks! This week, we aim to address common queries about Zoho CRM Widgets through frequently asked questions from our developer forum. Take a quick glance at these FAQs and learn from your peers' inquiries. 1. Where can I
                                                                                                          • open word file in zoho writer desktop version

                                                                                                            "How can I open a Microsoft Word (.doc or .docx) file in Zoho Writer if I only have the file saved on my computer and Zoho Writer doesn't appear as an option when I try 'Open with'? Is there a way to directly open the .doc file in Zoho Writer?"
                                                                                                          • Zoho PDF editor has a lot of issues.

                                                                                                            Zoho PDF editor needs a lot of work. It hangs and glitches a lot. Deletes annotations and clearings randomly.
                                                                                                          • Zohom mail

                                                                                                            Plz resolve the problem . I hope u understand .
                                                                                                          • Zoho sheet desktop version

                                                                                                            Hi Zoho team Where can I access desktop version of zoho sheets? It is important as web version is slow and requires one to be online all the time to do even basic work. If it is available, please guide me to the same.
                                                                                                          • ZOHO SHEETS

                                                                                                            Where can I access desktop version of zoho sheets? It is important to do basic work If it is available, please guide me to the same
                                                                                                          • Zoho Books - France

                                                                                                            L’équipe de Zoho France reçoit régulièrement des questions sur la conformité de ses applications de finances (Zoho Books/ Zoho Invoice) pour le marché français. Voici quelques points pour clarifier la question : Zoho Books est un logiciel de comptabilité
                                                                                                          • Using Zoho Flow to create sales orders from won deal in Zoho CRM

                                                                                                            Hi there, We are using Zoho Flow to create sales orders automatically when a deal is won in Zoho CRM. However, the sales order requires "Product Details" to be passed in "jsonobject", and is resulting in this error: Zoho CRM says "Invalid input for invalid
                                                                                                          • Is Zoho Sheet available for Linux ?

                                                                                                            Is Zoho Sheet available for Linux ?
                                                                                                          • Zoho pdf suit

                                                                                                            Pl. design products with following feature: 1. Please add all features given in Ilovepdf website to work on pdf files. It is mandatory to use pdf in court work. 2. Courts have prescribed New Times Roman, pl. add this font as well 3. Indexing, signature
                                                                                                          • Bharat

                                                                                                            a
                                                                                                          • how to disable staff selection Zoho Booking integrated to SalesIQ?

                                                                                                            currently there is only one Consultant in my Zoho Bookings like this I integrate Zoho Bookings into Zoho SalesIQ to create a chatbot. Unfortunately, even though I only have one consultant for a consultation, the user have to pick the consultant. It will
                                                                                                          • Zoho Bookings No Sync with Outlook

                                                                                                            Zoho Bookings appointments are showing on my Outlook Calendar but Outlook events are not showing on Zoho Bookings. How do I fix this?
                                                                                                          • End Date in Zoho Bookings

                                                                                                            When I give my appointments a 30 minutes time I would expect the software not to even show the End Time.  But it actually makes the user pick an End Time.  Did I just miss a setting?  
                                                                                                          • Custom confirmation message

                                                                                                            How can I change the message that users see after they submit the booking form? I have to confirm some details before their appointment is officially "confirmed", so I want to change it where it doesn't say their appointment is "confirmed" but rather
                                                                                                          • Issue showing too many consultations in my workspace link.

                                                                                                            Hi Team, I’ve set up two Workspaces to track meetings from different sources. So far, this has been working well, and the two Workspaces are differentiated without any issues. However, when I navigate to Consultations and share the link to my personal
                                                                                                          • Deluge sendmail in Zoho Desk schedule can't send email from a verified email address

                                                                                                            I am trying to add a scheduled action with ZDesk using a Deluge function that sends a weekly email to specific ticket client contacts I've already verified the email address for use in ZDesk, but sendmail won't allow it in its "from:" clause. I've attached
                                                                                                          • Zoho Learn & Zoho Connect

                                                                                                            Hi, Is there a way to sync the knowledge base we have in Zoho Learn with the manuals section is Zoho Connect? Thanks,
                                                                                                          • Addin Support in Zoho Sheet

                                                                                                            Is there any addin support available in zoho sheet as like google marketplace to enhance productivity by connecting with other apps, providing AI data analysis, streamlining business processes, and more?
                                                                                                          • Changing Corporate Structure - How Best to Adapt Current and Future Zoho Instances

                                                                                                            My current company is Company A LLC with a dba ("doing business as" - essentially an alias) Product Name B. Basically, Company A is the legal entity and Product Name B is what customers see, but it's all one business right now. We currently have a Zoho
                                                                                                          • how to add subform over sigma in the CRM

                                                                                                            my new module don't have any subform available any way to add this from sigma or from the crm
                                                                                                          • Next Page