2013-07-31 3 views
0

Я пытаюсь извлечь запись из базы данных с помощью Eloquent CRM. Имя поля первичного ключа моей таблицы: "user_id". Странно то, что каждый раз, когда я использую User::find() и передать user_id номер, я получаюLaravel Model :: find() throws SQLSTATE error

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'id' in 'where clause' 
(SQL: select * from `users` where `id` = ? limit 1) (Bindings: array (0 => 8,)) 

Я предполагаю, что ОРМ делает вызовы, предполагающие имя поля Идентификатор таблицы является "id" вместо "user_id". Как я могу проверить, что он правильно видит то, что он должен видеть. Я также попытался изменить поле user_id первичного ключа на «id», поскольку кажется, что ORM ожидает, и это сработало, но я следую соглашению об именах в моей схеме базы данных, поэтому я хотел бы придерживаться "user_id".

Любая форма помощи будет полезна.

спасибо

ответ

1

У меня есть проблема. Все, что мне нужно было сделать, это правильно прочитать документацию. Извините за то, что поспешил задать вопрос простым.

Eloquent предполагает, что поле первичного ключа для любой таблицы по умолчанию называется «id». Чтобы изменить это, просто переопределите поле $ primaryKey в соответствующее имя поля в таблице базы данных.

-1
class User extends Eloquent implements .... 

    public $publicKey = 'user_id'; 

    ... 
+0

Это не $ publicKey, который вы хотите установить, это $ primaryKey. И он должен быть защищен, чтобы его можно было изменить, а не Public. – Gyhth