2012-09-28 73 views
0

我正在使用NOTORM生成查詢,並且在用戶可以選擇字段,條件等的應用程序上有一種情況,因此基本上會提供自定義查詢。這樣用戶就可以生成一個報告,例如'擁有名字=傑克的人花費了> 800'。動態查詢檢索

我正在使用NOTORM來生成這個查詢,但是我想存儲查詢以供不使用NOTORM的應用程序的另一部分使用。有沒有任何函數來檢索生成的查詢?

這是NOTORM物體的外觀產生後的查詢和執行:

object(NotORM_Result)#55 (33) { 
    ["single":protected]=> 
    bool(false) 
    ["select":protected]=> 
    array(0) { 
    } 
    ["conditions":protected]=> 
    array(7) { 
    [0]=> 
    string(9) "name = ? " 
    [1]=> 
    string(12) "surname = ? " 
    [2]=> 
    string(15) "custom_field_19" 
    [3]=> 
    string(31) "custom_field_20 BETWEEN ? AND ?" 
    [4]=> 
    string(21) "custom_field_18 <= ? " 
    [5]=> 
    string(15) "custom_field_16" 
    [6]=> 
    string(10) "email = ? " 
    } 
    ["where":protected]=> 
    array(7) { 
    [0]=> 
    string(9) "name = ? " 
    [1]=> 
    string(12) "surname = ? " 
    [2]=> 
    string(52) "custom_field_19 IN ('Yes', 'Sent lender info', 'No')" 
    [3]=> 
    string(31) "custom_field_20 BETWEEN ? AND ?" 
    [4]=> 
    string(21) "custom_field_18 <= ? " 
    [5]=> 
    string(28) "custom_field_16 IN ('Buyer')" 
    [6]=> 
    string(10) "email = ? " 
    } 
    ["parameters":protected]=> 
    array(6) { 
    [0]=> 
    string(1) "a" 
    [1]=> 
    string(6) "Franco" 
    [2]=> 
    int(1218146400) 
    [3]=> 
    int(1249682400) 
    [4]=> 
    string(3) "800" 
    [5]=> 
    string(1) "?" 
    } 
    ["order":protected]=> 
    array(0) { 
    } 
    ["limit":protected]=> 
    NULL 
    ["offset":protected]=> 
    NULL 
    ["group":protected]=> 
    string(0) "" 
    ["having":protected]=> 
    string(0) "" 
    ["lock":protected]=> 
    NULL 
    ["union":protected]=> 
    array(0) { 
    } 
    ["unionOrder":protected]=> 
    array(0) { 
    } 
    ["unionLimit":protected]=> 
    NULL 
    ["unionOffset":protected]=> 
    NULL 
    ["data":protected]=> 
    NULL 
    ["referencing":protected]=> 
    array(0) { 
    } 
    ["aggregation":protected]=> 
    array(0) { 
    } 
    ["accessed":protected]=> 
    NULL 
    ["access":protected]=> 
    NULL 
    ["keys":protected]=> 
    array(0) { 
    } 
    ["connection":protected]=> 
    NULL 
    ["driver":protected]=> 
    NULL 
    ["structure":protected]=> 
    NULL 
    ["cache":protected]=> 
    NULL 
    ["notORM":protected]=> 
    object(NotORM)#3 (12) { 
    ["connection":protected]=> 
    object(PDO)#2 (0) { 
    } 
    ["driver":protected]=> 
    string(5) "mysql" 
    ["structure":protected]=> 
    object(NotORM_Structure_Convention)#4 (4) { 
     ["primary":protected]=> 
     string(2) "id" 
     ["foreign":protected]=> 
     string(5) "%s_id" 
     ["table":protected]=> 
     string(2) "%s" 
     ["prefix":protected]=> 
     string(0) "" 
    } 
    ["cache":protected]=> 
    NULL 
    ["notORM":protected]=> 
    NULL 
    ["table":protected]=> 
    NULL 
    ["primary":protected]=> 
    NULL 
    ["rows":protected]=> 
    NULL 
    ["referenced":protected]=> 
    array(0) { 
    } 
    ["debug":protected]=> 
    bool(false) 
    ["freeze":protected]=> 
    bool(false) 
    ["rowClass":protected]=> 
    string(10) "NotORM_Row" 
    } 
    ["table":protected]=> 
    string(5) "users" 
    ["primary":protected]=> 
    string(2) "id" 
    ["rows":protected]=> 
    NULL 
    ["referenced":protected]=> 
    array(0) { 
    } 
    ["debug":protected]=> 
    bool(false) 
    ["freeze":protected]=> 
    bool(false) 
    ["rowClass":protected]=> 
    string(10) "NotORM_Row" 
} 

我可以做一些一種腳本,遍歷「其中」和「參數」,但似乎不太優雅,特別是因爲這些數組的順序是不正確的(我將不得不做一些事情,比如用「參數」中的下一項替換每個「?」)...任何NOTORM函數?或者您建議更優雅的方式?

這是「那裏」和「參數」部分的情況下,你有什麼高雅的最後一個選項:

["where":protected]=> 
    array(7) { 
    [0]=> 
    string(9) "name = ? " 
    [1]=> 
    string(12) "surname = ? " 
    [2]=> 
    string(52) "custom_field_19 IN ('Yes', 'Sent lender info', 'No')" 
    [3]=> 
    string(31) "custom_field_20 BETWEEN ? AND ?" 
    [4]=> 
    string(21) "custom_field_18 <= ? " 
    [5]=> 
    string(28) "custom_field_16 IN ('Buyer')" 
    [6]=> 
    string(10) "email = ? " 
    } 
    ["parameters":protected]=> 
    array(6) { 
    [0]=> 
    string(1) "a" 
    [1]=> 
    string(6) "Franco" 
    [2]=> 
    int(1218146400) 
    [3]=> 
    int(1249682400) 
    [4]=> 
    string(3) "800" 
    [5]=> 
    string(1) "?" 
    } 

回答

0

就在NotORM_Result對象轉換爲字符串

$sql = (string)$result; 
//or 
$sql = $result->__toString(); 
+0

感謝。 ..但我仍然看到'?'標誌,轉換後,我得到:選擇*從用戶在哪裏(姓!=?)和(custom_field_19 IN('是','發送貸方信息','否'))(name =?)...爲什麼?完整查詢在哪裏? – luqita