2016-06-24 25 views
0

cakePHP3を使用していますが、単価がpdo bindパラメータと等しい場合にデータを取得するために使用しているクエリのデバッグは次のとおりです。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進数の値を完全に検索するようです。

関連する問題