2014-10-01 2 views
1

Я пытаюсь создать приложение с Zend 2.3. Он основан на (и очень похож на) Album application учебника Zend. Однако мое приложение касается объектов Person вместо объектов Album.Нужно ли имена столбцов сопоставлять имена переменных в Zend?

Когда я начал, я дал своему столбцу id имя «ID», а не «id», как в учебнике. Следовательно, моя функция extractArray в классе Person выглядела так:

public function exchangeArray($data) 
{ 
    $this->id = (isset($data['ID'])) ? $data['ID'] : null; // <- DB column name is ID, not id 
    $this->name = (isset($data['name'])) ? $data['name'] : null; 
    $this->initials = (isset($data['initials'])) ? $data['initials'] : null; 
    $this->title = (isset($data['title'])) ? $data['title'] : null; 
    $this->description = (isset($data['description'])) ? $data['description'] : null; 
    $this->email = (isset($data['email'])) ? $data['email'] : null; 
} 

Я не мог заставить это работать. Добавление или удаление Лица прошло гладко. Но когда я попытался отредактировать Личность, он рассматривался как вставка. После нескольких часов отладки все, что я смог установить, это то, что где-то во время проверки формы идентификатор объекта Person становится нулевым, в результате чего в ферме полагают, что запись является новой, а не редактируемой. Я действительно не знаю, как быть более точным. Я не делал ничего с оценкой формы, это точно так же, как образец приложения Album.

После того, как я изменил имя столбца на «id» и обновил код соответственно, все работает. Это, казалось бы, указывает ... что именно? Эти имена DB должны быть более строчными? Вряд ли. Эти имена БД должны совпадать с именами переменных? Скорее всего, но мне кажется странным.

Мой вопрос: что пошло не так с моей первой попытки и был ли другой способ исправить это, кроме изменения имени столбца?

+1

Пожалуйста, подумайте о том, чтобы показать больше кода, например, «editAction», «AlbumForm», «AlbumModel» ... –

ответ

0

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

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