2015-11-27 2 views
0

У меня есть таблица Friends в базе данных. Он имеет следующее поле: id и name.Laravel Eloquent не вставляет Свойства модели

У меня есть Friend класса в папке Models:

class Friend extends Eloquent { 

public $username; 

} 

Когда я иду, чтобы вставить новый Friend запись помещается в таблицу; однако, username в базе данных всегда пуст.

$friend = new Friend; 
$friend->username = 'Monster'; 
$friend->save(); 
return $friend->username; 

я вернуть $username и вот-вот и-это монстр; однако в базе данных отображается пустое имя пользователя.

EDIT: Кроме того, когда я обновляю запись:

$friend = Friend::find(1); 
$friend->username = "My new name"; 
$friend->save(); 

Не только username не обновляется, но ни один не является `обновляется метка времени.

+0

Попробуйте расширить класс на 'Model' и сделать это в классе модели ur' protected $ table = 'Friends'; ' – Saani

+0

Вместо того, чтобы расширять' Eloquent'? – monster

+0

Вызывает ошибку: в базу данных ничего не добавлено. – monster

ответ

2

Вы не должны писать свои атрибуты так, потому что доступ к атрибутам осуществляется с помощью магического метода. Удалите эту строку public $username; из вашей модели.

Вы можете увидеть, как все это работает here.

+0

Бинго. Но ... Я немного смущен: я думал, что должен указать свойства объекта? Кроме того, что, если я хотел бы выполнить определенную проверку? – monster

+0

Абсолютно нет, базовая модель имеет массив (например, «атрибуты»), где хранятся атрибуты. Затем, когда вы делаете что-то '$ friend-> username', Laravel отправляйте этот атрибут в массив. – PeterPan666

+0

А, ок. Как выполнить дополнительную проверку? – monster

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