2016-03-28 4 views
2

У меня проблема в Laravel 5. Когда я обновляю запись в базе данных, я получаю ошибку Unknown column 'id' in 'where clause'. В контроллере я использую предложение WHERE, чтобы получить запись, которую я хочу обновить. Мой первичный ключ не является идентификатором, а тип - bigInteger. Я попытался добавить protected $primaryKey в модель, но он не работает для bigInteger. Есть ли способ использовать мой собственный первичный ключ вместо использования id?Обновление Laravel 5 без id

Контроллер

$item = Item::where('item_id','=',$item_id)->first(); 
$item.name = $name; 
$item.type = $type; 
$item.save(); 
+0

Показать контроллер. – user2094178

+0

Я добавил контроллер – OrgGila

+0

Попробуйте 'Item :: find ($ item_id)'. Кроме того, вы используете синтаксис ruby ​​в php, он должен быть '$ item->' вместо '$ item.' в остальной части вашего кода. – user2094178

ответ

1

пожалуйста добавьте эту строку в вашей модели Item.php

class Item extends Model {


// добавить эту строку только
protected $primaryKey = 'item_id';

//..... the rest of your model

с момента, используя имя пользовательского идентификатора, Laravel не будет знать, что ваш первичный ключ без вас указать его

0

Попробуйте $item = Item::where('item_id', $item_id)->first(); Если до сих пор не работает также добавить protected $primaryKey = "item_id"; к вашей модели

2

Laravel в ОРМ $primaryKey по умолчанию есть 'id'.

Когда обновление ОРМ, это использовать SQL, как:

... where {$this->primaryKey} = {$this->{$this->primaryKey}} 

Итак, когда вы класс расширяет ОРМ.

Вы должны переопределить protect $primaryKey = '<your_table_primary_key>';.

Смежные вопросы