QuickBooks php DevKit数据库查询只返回100行

时间:2015-06-12 17:34:06

标签: php quickbooks quickbooks-online

我正在尝试使用DevKit浏览我的QuickBooks Online帐户中的所有现有客户,并更新每个客户的显示名称,以便将公司名称添加到我已分配给他们的公司ID中。目前,该帐户中约有1800个客户。

使用下面的代码,我每次运行脚本时都可以成功处理100个客户,但此时它会停止。服务客户查询返回的行是否有时间或数量限制?如果是这样,有没有办法增加它?或问题完全是另一回事?

Quickbooks_update:

class Quickbooks_Update extends CI_Controller
{
    function quickbooks_add(){
        require_once 'application/QuickBooks/config.php';
        $this->load->model('companyAccounts');
        $success = array();
        $failed = array();
        $duplicate = array();
        $not_exist = array();

        $CustomerService = new QuickBooks_IPP_Service_Customer();

        $customers = $CustomerService->query($Context, $realm, "SELECT * FROM Customer ");

        foreach($customers as $customer) {

            $name = $customer->getCompanyName();

            $q = $this->db->select('companyAccountId');
            $q = $this->db->from('companyAccounts');
            $q = $this->db->where('companyName', $name);
            $q = $this->db->get();
            $results = $q->result();

            foreach($results as $company){
                $companyId = $company->companyAccountId;
            }
            if(sizeof($results) == 1){
                $customer->setDisplayName($companyId . '-' . $name);
                $resp = $CustomerService->update($Context, $realm, $customer->getId(), $customer);
                if(!$resp){
                    array_push($failed, $name);
                }else{
                    array_push($success, $name);
                }
            }
            else if(sizeof($results) == 0){
               array_push($not_exist, $name);
            }
            else{
                array_push($duplicate, $name);
            }
        }
        $data['success'] = $success;
        $data['failed'] = $failed;
        $data['duplicate'] = $duplicate;
        $data['not_exist'] = $not_exist;
        $this->load->view('quickbooks', $data);
    }
}

谢谢!

1 个答案:

答案 0 :(得分:2)

QuickBooks Online默认情况下一次只返回100行。

如果您参考文档:

https://developer.intuit.com/docs/0100_accounting/0300_developer_guides/querying_data

您会找到一些示例,说明如何使用STARTPOSITIONMAXRESULTS来控制您获取的记录数量:

SELECT * FROM Invoice WHERE Status = 'Synchronized'STARTPOSITION 1 MAXRESULTS 10

SELECT * FROM Invoice WHERE Status = 'Synchronized'STARTPOSITION 11 MAXRESULTS 10

引用文档:

  

要翻阅结果,请指定STARTPOSITION(查询结果中实体的位置)和MAXRESULTS(结果中的最大实体数)。

  

响应中可以返回的最大实体数为1000.如果未指定结果大小,则默认数为100.如果查询返回许多实体,则按分块中的描述获取块中的实体。要确定特定查询返回的实体数,请使用查询中的COUNT关键字进行探测。有关详细信息,请参阅计数。