Модель Eloquent возвращает 0 в качестве первичного ключа

У меня есть эта миграция:

Schema::create('provincias', function (Blueprint $table) {
    $table->string('codigo', 2);
    $table->string('nombre', 50);
    $table->timestamp('creado');
    $table->primary('codigo');
});

Это моя модель:

class Provincia extends Model
{   
    protected $primaryKey = 'codigo';
    public $timestamps = false;
}

Я запускаю миграцию и сохраняю данные следующим образом:

$provincia = new Provincia;
$provincia->codigo = "BA";
$provincia->nombre = "Buenos Aires";
$provincia->save();

Проблема в том, что когда я получаю все и сбрасываю:

$provincias = Provincia::all();
return $provincias;

Первичный ключ "codigo" всегда равен 0, даже когда я проверяю таблицу базы данных и имеет правильное значение:

{
    codigo: 0,
    nombre: "Buenos Aires",
    creado: "2015-12-24 21:00:24"
}

Ответы

Ответ 1

Вы можете попробовать установить public $incrementing = false; на свою модель, поэтому красноречивый не ожидает, что ваш первичный ключ будет основным ключом автоинкремента.

Ответ 2

Вы также можете установить тип первичного ключа:

protected $keyType = 'string';
public $incrementing = false;

Важная заметка. Вы должны добавить вторую строку. $incrementing = false. Если вы этого не сделаете, ключ будет 0 после вызова save() для вашей модели.