2012-09-28 2 views
0

쿼리를 생성하는 데 NOTORM을 사용하고 있으며 사용자가 필드, 조건 등을 선택할 수있는 응용 프로그램에 하나의 사례가 있으므로 기본적으로 사용자 지정 쿼리가 제공됩니다. 그렇게하면 사용자가 '이름이 잭 => 800 인 사람'과 같은 보고서를 생성 할 수 있습니다.동적 쿼리 검색

이 쿼리를 생성하는 데 NOT NOTM을 사용하고 있지만 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 객체가 모습입니다 그 배열의 순서가 올바르지 않기 때문에 ("매개 변수"의 다음 항목으로 각 "?"를 바꾸는 것과 같이해야 할 것입니다) ... 모든 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

은 그냥 문자열

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

덕분에 NotORM_Result의 개체를 변환 :

당신이 마지막 옵션에 대한 우아한 무언가가 경우에 '어디에서'와 '매개 변수'부분이다. ..하지만 여전히 '?' (이름 =?) AND (custom_field_19 IN ('예,'보낸 '대출자 정보', '아니오')) AND (이름 =?) ... 이유는 무엇입니까? 전체 쿼리는 어디에 있습니까? – luqita