我使用“表字段/列”作为varchar类型而不是整数类型。但是为什么要修剪第一个0(零)?

问题描述 投票:-1回答:1

这里,“电话”是“员工”表的字段,“电话”类型是字符串/ varchar。

步骤:1)使用phone =“ 01679420786”

保存一个“雇员”信息

迁移:

public function up()
{
    Schema::create('employees', function (Blueprint $table) {
        $table->string('phone')->primary();
        $table->string('name');
        $table->string('designation');
        $table->timestamps();
    });
}

型号:

class Employee extends Model
{
    protected $primaryKey = 'phone';
}

[2)获取雇员,然后是dd()

public function getEmployee()
{
    $employee = Employee::get();
    dd($employee[0]->phone);
    return view('employee.showEmployeeList')->with('employee', $employee);
}

3)浏览器中的输出:1679420786

使用Laravel Framework 6.0.3,PHP版本:7.3.2

laravel integer trim varchar
1个回答
2
投票

您正在将模型的主键设置为phone。在这种情况下,它是一个字符串。默认情况下,Laravel期望它是一个整数,因此正在尝试将该值转换为整数。这是从值的开头删除0

为了解决这个问题,将以下属性添加到模型中。

protected $keyType = 'string';

这告诉Laravel主键不是整数,而是一个字符串,因此它将相应地进行强制转换。

您的模型将如下所示:

class Employee extends Model
{
    protected $primaryKey = 'phone';

    protected $keyType = 'string';
}
© www.soinside.com 2019 - 2024. All rights reserved.