似乎发现了一个 Laravel 的 BUG

SQLServer数据库,表结构:

class MyModel extends Model
{
    protected $table = 'BS0010';
    protected $primaryKey = 'BS0010000';
    public $timestamps = false;
    protected $fillable = ['BS0010000','BS0010007', 'BS0010W02','BS0010108','BS0010120','BS0010121'];
    protected $keyType='string';
}

这个表还有一个种子数列,但不是主键,叫 BS0010W58
当对这个 Model 调用 firstOrCreate 时发现把种子数生成的事数赋值给了我的主键 BS0010000。
下面是PHP代码及日志

            Log::info($new_key);

            $my = static::query()
                ->firstOrCreate(['BS0010W02' => $openID], [
                    'BS0010000' => $new_key,
                    'BS0010007' => false,
                    'BS0010108' => '1',
                    'BS0010120' => '000030',
                    'BS0010121' => '10',
                    'BS0010301' => 32, //个人客户
                ]);

            Log::info(var_export($my->toArray(),true));

            if ($other) {
                while ($k = key($other)){
                    $my->setAttribute($k, $other[$k]);
                    next($other);
                }
                $my->save();
            }

[2019-03-13 14:59:25] local.INFO: XCX000002
[2019-03-13 14:59:25] local.INFO: array (
'BS0010W02' => 'oDdeZ5XM9yprR8oRgSAnsMh8871Y',
'BS0010000' => '94501',
'BS0010007' => false,
'BS0010108' => '1',
'BS0010120' => '000030',
'BS0010121' => '10',
)

保存时我指定了主键的值是:XCX000002
但调用后 BS0010000 变成了 94501
但这个 94501 是我的种子数列的值

碰巧因为后边的代码出错,发现我指定的主键怎么变成一个整数了。后来才查出这个整数来源于我的一个种子数列。
各这个怎么解释都说不过去吧。

本作品采用《CC 协议》,转载必须注明作者和本文链接
一亩三分地儿
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!