Изменить первичный ключ по умолчанию в Eloquent



могу ли я изменить красноречивый первичный ключ модели.



Я хочу установить первичный ключ например admin_id вместо 'id'?



Я знаю, что могу изменить имя таблицы для модели, как



protected $table = "admin";


есть ли что-то подобное для первичного ключа?

476   6  

6 ответов:

да

class User extends Eloquent {

    protected $primaryKey = 'admin_id';

}
class User extends Eloquent {

    protected $primarykey = 'admin_id';

}

но

class User extends Eloquent {

    protected $primaryKey = 'admin_id';

}

обратите внимание на букву K (capital) в переменной $primaryKey

переменная первичного ключа чувствительна к регистру и должна быть $primaryKey на работу.

пример:

protected $primaryKey = 'your_primary_key_id';

пример в классе модели:

class User extends Eloquent {

    protected $primaryKey = 'your_primary_key_id';

}
class User extends Eloquent {

    protected $primaryKey = 'admin_id';

}

согласно документации Laravel:


Eloquent также предполагает, что каждая таблица имеет столбец первичного ключа с именем id. Вы можете определить $primaryKey свойство для переопределения этого соглашения.

кроме того, Eloquent предполагает, что первичный ключ является увеличивающимся целочисленным значением, что означает, что по умолчанию первичный ключ будет автоматически приведен к int. Если вы хотите использовать неинкрементный или нечисловой первичный ключ, вы должны установить public $incrementing свойство на вашей модели false.

если вы хотите использовать составной ключ (строка)

вы должны убедиться, что вы установить public $incrementing = false в противном случае laravel приведет поле к целому числу, давая 0

class User extends Model {

    protected $primaryKey = 'my_string_key';
    public $timestamp = false;

}

чтобы назначить первичный ключ, вы должны..- >

class User extends Eloquent {

    protected $primaryKey='admin_id';

 }

Comments

    Ничего не найдено.