Yii2如何在模型中设置十进制规则

时间:2018-07-23 05:17:46

标签: model yii2 decimal yii2-advanced-app

我有一个模特

<?php

namespace common\models;

use Yii;

/**
* This is the model class for table "new_val".
*
* @property integer $id
* @property string $avg
* @property string $sd
*/
class NewVal extends \yii\db\ActiveRecord
{
/**
 * @inheritdoc
 */
public static function tableName()
{
    return 'new_val';
}

/**
 * @inheritdoc
 */
public function rules()
{
    return [
        [['avg', 'sd'], 'double'],
    ];
}

/**
 * @inheritdoc
 */
public function attributeLabels()
{
    return [
        'id' => 'ID',
        'avg' => 'Avg',
        'sd' => 'Sd',
    ];
}
}

在我的DB中,将avgsd的值设置为小数。所以我想在其中保存一个十进制值。

我尝试搜索该方法,但是找不到一个好的解决方案。我试图在规则中设置floatdouble。但是float给了我一个例外,double将我输入的十进制数字转换为四舍五入,即,如果我输入了15.5,那么它将四舍五入为16

如何设置带有十进制数字的规则?

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

尝试validator number,但根据框架,它与CustomTabsClient.bindCustomTabsService(context, CUSTOM_TAB_PACKAGE_NAME, new CustomTabsServiceConnection() { @Override public void onCustomTabsServiceConnected(ComponentName name, CustomTabsClient client) { mClient = client; mClient.warmup(0); CustomTabsSession session = mClient.newSession(new CustomTabsCallback() { @Override public void onPostMessage(String message, Bundle extras) { // Here the method not called by CustomTabs super.onPostMessage(message, extras); } @Override public void onMessageChannelReady(Bundle extras) { super.onMessageChannelReady(extras); } @Override public void onNavigationEvent(int navigationEvent, Bundle extras) { super.onNavigationEvent(navigationEvent, extras); } }); session.mayLaunchUrl(uri, null, null); CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder(session); CustomTabsIntent customTabsIntent = builder.build(); customTabsIntent.launchUrl(context, uri); } @Override public void onServiceDisconnected(ComponentName name) { mClient = null; } }); 相同:

double

答案 1 :(得分:-1)

您在规则中使用数字, 如果您有类似16.66677777777777777的数字,则该轮的回合与yii无关 并且您在mysql中的字段没有足够的空间使其无法使用

floor(your_number * 100) / 100