Я использую "поле таблицы / столбец", как тип VARCHAR, а не целочисленный тип. Но зачем обрезать сначала 0 (ноль)? - PullRequest
0 голосов
/ 01 октября 2019

Здесь «Телефон» - это поле таблицы «Сотрудник», а тип «Телефон» - строка / 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) Получить Employee и затем 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

1 Ответ

2 голосов
/ 01 октября 2019

Вы устанавливаете первичный ключ модели на phone. В этом случае это строка. По умолчанию Laravel ожидает, что это будет целое число, и поэтому пытается привести значение к целому числу. Это удаляет 0 с начала значения.

Чтобы решить эту проблему, добавьте следующее свойство в вашу модель.

protected $keyType = 'string';

Это сообщает Laravel, что первичный ключне является целым числом, а вместо этого является строкой, поэтому она будет соответственно преобразовывать ее.

Ваша модель должна выглядеть примерно так:

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

    protected $keyType = 'string';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...