Я пытаюсь выяснить, как программировать референциальное сопоставление с Zend Framework 1.11.x. У меня есть 4 таблицы: человек, города, штаты и страны. У каждого человека есть city_id, state_id и country_id, связанные с каждой строкой.
В настоящее время я могу отображать все данные, используя fetchAll, но все города, штаты и страны отображаются в цифрах, а не в соответствующих именах. Я пытался найти учебники, Google и т. Д., Но просто не могу найти хороший пример того, что я хочу сделать.
Вот код в моем контроллере:
<?php
class Application_Model_DbTable_Person extends Zend_Db_Table_Abstract
{
protected $_name = 'person';
protected $_primary = 'person_id';
//get individual rows of people
public function getPerson($id)
{
$id = (int)$id;
$row = $this->fetchRow('person_id = ' . $id);
if(!$row) {
throw new Exception("Could not find row $id");
}
return $row->toArray();
}
//adding new persons
public function addPerson($firstName, $lastName, $cityId, $stateId, $countryId, $dob, $zip)
{
$data = array(
'first_name' => $firstName,
'last_name' => $lastName,
'city_id' => $cityId,
'state_id' => $stateId,
'country_id' => $countryId,
'dob' => $dob,
'zip' => $zip,
);
$this->insert($data);
}
//updating an existing person
public function updatePerson($id, $firstName, $lastName, $cityId, $stateId, $countryId, $dob, $zip)
{
$data = array(
'first_name' => $firstName,
'last_name' => $lastName,
'city_id' => $cityId,
'state_id' => $stateId,
'country_id' => $countryId,
'dob' => $dob,
'zip' => $zip,
);
$this->update($data, 'person_id = '. (int)$id);
}
//deleting a person
public function deletePerson($id)
{
$this->delete('person_id = ' . (int)$id);
}
}
Я также приложил изображение того, на что я смотрю с точки зрения пользовательского интерфейса. Если я смогу это понять, эта концепция поможет мне продвинуться дальше в развитии.
Я хочу избегать использования select (); и сосредоточиться на коде Zend, я знаю, как сделать это с базовым SQL, но я пытаюсь изучить всю инфраструктуру MVC.
http://imageshack.us/photo/my-images/29/screenshot20110705at711.png/
Также вот мой код контроллера:
<?php
class PersonController extends Zend_Controller_Action
{
public function init()
{
/* Initialize action controller here */
}
public function indexAction()
{
$person = new Application_Model_DbTable_Person();
$this->view->person = $person->fetchAll();
}
public function addAction()
{
// action body
}
public function editAction()
{
// action body
}
public function deleteAction()
{
// action body
}
}