thinkphp 5 A non well formed numeric value encountered 创建时间 created_at

https://www.kancloud.cn/manual/thinkphp5/138669

改了类型还是不起作用

这个字段在mysql中定义的是date类型

查看Model.php文件  thinkphp/library/think/Model.php

 

走到else报错的, 是数据类型错误的问题

application/index/model/Contract.php

 

因为thinkphp5默认timestamp是 integer类型, 需要改为date型

在自己定义的模型中添加这几行

    protected $autoWriteTimestamp = 'date';

    protected $type = [
        'ARM_FromDate' => 'datetime:Y-m-d',
        'ARM_ToDate' => 'datetime:Y-m-d'
    ];

这样就走到if, 而不是else分支

 

再次访问接口 ok

想实现Laravel一样的model created_at, updated_at都是datetime类型 需要如下配置:

 

application/index/model/Contract.php

<?php

namespace app\index\model;

use think\Model;
use think\Config;

class Contract extends Model {
    protected $table = 'ARM_Contract';

    const PRIMARY_KEY = 'ARM_ACID';

    protected $pk = self::PRIMARY_KEY;

    protected $connection = [];

    protected $field = [
        self::PRIMARY_KEY, 'ARM_AGID', 'ARM_FromDate', 'ARM_ToDate', 'ARM_Status',
        // 'ARM_Contact', 'ARM_Memorandum',
        'ARM_DividePercent',
        // 'ARM_District',
        'ARM_GradeName',  // 学段03高02初
    ];

    // 输出的字段 防止输出所有的字段
    protected $visible = [
        self::PRIMARY_KEY, 'ARM_AGID', 'ARM_Status', 'ARM_GradeName', 'ARM_FromDate', 'ARM_ToDate'
    ];

    protected $autoWriteTimestamp = 'date';

    protected $type = [
        'ARM_FromDate' => 'datetime:Y-m-d',
        'ARM_ToDate' => 'datetime:Y-m-d'
    ];

    public function __construct($data = []) {
        $this->connection = Config::get('db_config1');
        parent::__construct($data);
    }

    public static function getEffectiveEntries() {
        $today = date('Y-m-d', time());
        $list = self::all([
            'ARM_Status' => 1,
            'ARM_ToDate' => ['gt', $today],
            'ARM_FromDate' => ['lt', $today],
            'ARM_DividePercent' => ['neq', 0]
        ]);
        return $list;
    }

    // @ref: https://www.kancloud.cn/manual/thinkphp5/135176
    public function getChunk() {
        $today = date('Y-m-d', time());

        return $this->where('ARM_Status', '=', 1)
            ->where('ARM_ToDate', '>', $today)
            ->where('ARM_FromDate', '<', $today)
            ->where('ARM_DividePercent', '<>', 0)
            ->chunk(100, function($contracts) {
                foreach($contracts as $contract) {
                    // ...
                }
            });
    }
}

application/index/controller/Contract.php

<?php
/**
 * Created by PhpStorm.
 * User: mingzhanghui
 * Date: 7/24/2019
 * Time: 15:56
 */

namespace app\index\controller;

use app\index\model\Attorney;
use think\response\Json;

class Contract extends Json {
    // http://192.168.4.157:8030/index/contract/index
    /**
     * 列出所有有效的合同
     */
    public function index() {
        $contracts = \app\index\model\Contract::getEffectiveEntries();
        foreach ($contracts as &$contract) {
            /** @var $attoney */
            $attoney = Attorney::get(['ARM_AIGID' => $contract->ARM_AGID]);
            $contract->ARM_LegalPerson = $attoney->ARM_LegalPerson;
        }
        return $contracts;
    }

}

相关文章:https://blog.csdn.net/fareast_mzh/article/details/97145296

对于api接口服务要把默认的输出类型改为json

'default_return_type'    => 'json',

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fareast_mzh

打赏个金币

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值