【问题标题】:Cakephp sql decimal input formCakephp sql十进制输入表格
【发布时间】:2015-06-02 08:12:49
【问题描述】:

我使用 cakephp 2.6.4。和 sql srv 2012。 我需要以十进制数(4,2)格式保存十进制数 -> 前 4 位,分隔符后 2 位。

在 sql server 中我有数据类型 decimal(4,2),在模型中我有验证 'rule' => array('decimal',2)。

当我尝试保存例如 4213,12 时,它报告消息需要将数字舍入到 4213 或 4214 我尝试使用点 (.) 作为分隔符,但不起作用

当我在 sql srv float 中设置数据类型时,我可以保存,但不能使用小数,

有什么帮助吗? 天呐

  • 接下来我尝试在 sql srv 中使用 numeric(4,2),但结果与使用 decimal(4,2) 相同

  • 我的验证数组是:'coordinate_x' => array( '数字' => 数组( '规则' => 数组('十进制',2),

-所有内容都被注释了

  • 我设法得到 SQL 错误:错误:SQLSTATE[42000]:[Microsoft][SQL Server Native Client 11.0][SQL Server]将数据类型 varchar 转换为数字时出错。我删除了该字段的验证规则。似乎 cakephp 中的 dacimal 值等于字符。但是当我回滚验证规则时,会出现错误,例如将数字从 1234,12 舍入到 1234 或 1235

【问题讨论】:

  • Cake 生成的 SQL INSERT/UPDATE 是什么?
  • 我没有得到任何 sql。通过按提交,我会在输入字段周围得到带有按摩的红色边框。我认为没有执行任何sql。我认为这些按摩是浏览器按摩并且与数据库数据类型相关。有可能吗?
  • 听起来数据验证失败,因此 CakePHP 没有尝试更新数据库。你能用你模型的$validate数组更新你的问题吗?

标签: sql-server cakephp decimal cakephp-2.6


【解决方案1】:

已解决 HTML 要求:

<input type="number" step="0.01">

【讨论】:

    【解决方案2】:

    $this-&gt;Number-&gt;format();可以用来改变数字的格式。

    示例:

    $this->Number->format(floor($session->read('max_price')), 
          array('escape' => false, 
                'places' => 0, 
                 'thousands' => ','
          ));
    

    Place 属性用于设置十进制值。

    【讨论】:

    • 我想我可以在控制器中设置 beforeSave,我猜?
    • No 不能在控制器中工作,它只能查看文件
    • 但在视图中我对该字段只有一行: echo $this->Form->input('coordinate_x', array('label' => 'Koordinata X', 'title' = > 'x u htrs'));
    • 在你输入文本框等待我发布链接时,可以在 Java 脚本的帮助下更改格式号
    • digitalbush.com/projects/masked-input-plugin 在输入框中输入时使用链接更改数字格式
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-13
    • 1970-01-01
    • 2010-10-14
    • 2016-01-24
    • 2018-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多