2016-06-24 2 views
0

cakePHP3을 사용하고 있으며 다음은 단가가 pdo 바인드 매개 변수와 같을 때 데이터를 가져 오기 위해 사용하고있는 쿼리의 디버그입니다.float 값이 작동하지 않는 Cakephp 3 조건

'sql' => 'SELECT Dockets.id AS `Dockets__id`, Dockets.docketnum AS `Dockets__docketnum`, Branches.name AS `Branches__name`, Contacts.fname AS `Contacts__fname`, Contacts.lname AS `Contacts__lname`, Dockets.description AS `Dockets__description`, Dockets.quantity AS `Dockets__quantity`, Dockets.unitprice AS `Dockets__unitprice`, Dockets.status AS `Dockets__status`, Dockets.mailshipping AS `Dockets__mailshipping`, Dockets.mailorder AS `Dockets__mailorder`, ShippingForms.id AS `ShippingForms__id`, ShippingForms.status AS `ShippingForms__status`, VariablePrinterForms.start_prefix AS `VariablePrinterForms__start_prefix`, VariablePrinterForms.stop_prefix AS `VariablePrinterForms__stop_prefix` FROM dockets Dockets LEFT JOIN branches Branches ON Branches.id = (Dockets.branch_id) LEFT JOIN contacts Contacts ON Contacts.id = (Dockets.contact_id) LEFT JOIN shipping_forms ShippingForms ON Dockets.id = (ShippingForms.docket_id) LEFT JOIN variable_printer_forms VariablePrinterForms ON Dockets.id = (VariablePrinterForms.docket_id) LEFT JOIN lamdie_forms LamdieForms ON Dockets.id = (LamdieForms.docket_id) LEFT JOIN label_press_forms LabelPressForms ON Dockets.id = (LabelPressForms.docket_id) WHERE Dockets.unitprice = :c0 ORDER BY Dockets.docketnum desc LIMIT 25', 
'params' => [ 
    ':c0' => [ 
     'value' => '56.58', 
     'type' => 'float', 
     'placeholder' => 'c0' 
    ] 

그러나이 쿼리는 결과를 반환하지 않습니다. 내가

SELECT Dockets.id AS `Dockets__id`, Dockets.docketnum AS `Dockets__docketnum`, Branches.name AS `Branches__name`, Contacts.fname AS `Contacts__fname`, Contacts.lname AS `Contacts__lname`, Dockets.description AS `Dockets__description`, Dockets.quantity AS `Dockets__quantity`, Dockets.unitprice AS `Dockets__unitprice`, Dockets.status AS `Dockets__status`, Dockets.mailshipping AS `Dockets__mailshipping`, Dockets.mailorder AS `Dockets__mailorder`, ShippingForms.id AS `ShippingForms__id`, ShippingForms.status AS `ShippingForms__status`, VariablePrinterForms.start_prefix AS `VariablePrinterForms__start_prefix`, VariablePrinterForms.stop_prefix AS `VariablePrinterForms__stop_prefix` FROM dockets Dockets LEFT JOIN branches Branches ON Branches.id = (Dockets.branch_id) LEFT JOIN contacts Contacts ON Contacts.id = (Dockets.contact_id) LEFT JOIN shipping_forms ShippingForms ON Dockets.id = (ShippingForms.docket_id) LEFT JOIN variable_printer_forms VariablePrinterForms ON Dockets.id = (VariablePrinterForms.docket_id) LEFT JOIN lamdie_forms LamdieForms ON Dockets.id = (LamdieForms.docket_id) LEFT JOIN label_press_forms LabelPressForms ON Dockets.id = (LabelPressForms.docket_id) WHERE Dockets.unitprice = 56.58 ORDER BY Dockets.docketnum desc LIMIT 25 

로 phpMyAdmin을 동일한 쿼리를 사용하는 경우 그러나 그것은 결과의 무리를 반환합니다. 케이크가 왜 여기에 어떤 결과를 제공하지 않는지 누구든지 말해 줄 수 있습니까? 데이터베이스의 필드는 float (10,3)로 설정됩니다.

debugkit 로그가

SELECT Dockets.id AS `Dockets__id`, Dockets.docketnum AS `Dockets__docketnum`, Branches.name AS `Branches__name`, Contacts.fname AS `Contacts__fname`, Contacts.lname AS `Contacts__lname`, Dockets.description AS `Dockets__description`, Dockets.quantity AS `Dockets__quantity`, Dockets.unitprice AS `Dockets__unitprice`, Dockets.status AS `Dockets__status`, Dockets.mailshipping AS `Dockets__mailshipping`, Dockets.mailorder AS `Dockets__mailorder`, ShippingForms.id AS `ShippingForms__id`, ShippingForms.status AS `ShippingForms__status`, VariablePrinterForms.start_prefix AS `VariablePrinterForms__start_prefix`, VariablePrinterForms.stop_prefix AS `VariablePrinterForms__stop_prefix` FROM dockets Dockets LEFT JOIN branches Branches ON Branches.id = (Dockets.branch_id) LEFT JOIN contacts Contacts ON Contacts.id = (Dockets.contact_id) LEFT JOIN shipping_forms ShippingForms ON Dockets.id = (ShippingForms.docket_id) LEFT JOIN variable_printer_forms VariablePrinterForms ON Dockets.id = (VariablePrinterForms.docket_id) LEFT JOIN lamdie_forms LamdieForms ON Dockets.id = (LamdieForms.docket_id) LEFT JOIN label_press_forms LabelPressForms ON Dockets.id = (LabelPressForms.docket_id) WHERE Dockets.unitprice = 56.58 ORDER BY Dockets.docketnum desc LIMIT 25 OFFSET 0 

감사

+0

내 질문하지만 당신은 실제로 쿼리를 실행 했습니까? '$ query-> toArray()'또는'$ query-> all()'과 같은 것을 했습니까? – arilia

+0

예. $ query-> toArray()는 빈 집합 ([])을 제공합니다. –

+0

실제로 실행 된 쿼리를 디버깅하고 게시 할 수 있습니까? 디버그 모드가 활성화 될 때 debugKit의 SqlLog 패널에 표시되는 것 – arilia

답변

0

문제는 테이블의 데이터 유형은 FORMAT (같은 몇 가지 추가 기능을 필요로 정확한 부동 소수점 값을 검색하는 등의 플로트 (10,3)라고했다() 등) mysql 쿼리에 사용됩니다. 나는 그것을 10 진수 (10,3)로 바꿨고 10 진수 값을 완벽하게 검색하는 것으로 보인다.