Как получить данные из другой таблицы в классе модели Zend_Db? - PullRequest
2 голосов
/ 16 мая 2010

У меня есть две таблицы registries и names. Следовательно, у меня есть два модельных класса. Я кодирую метод в реестрах модели, и мне нужно выбрать все имена в names таблице / модели. Как я это сделал?

Должен ли простой new Names() работать? Но рекомендуется ли это?

Ответы [ 2 ]

6 голосов
/ 16 мая 2010

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

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

Вот почему неточно называть таблицу моделью.Нигде в документации Zend_Db_Table таблица не называется моделью.

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

Отсоедините ваши модели от ваших таблиц!


Ваш комментарий: Вы все еще думаете, что модель расширяется Zend_Db_Table_Abstract- это не так!

Модель не класс доступа к данным, это единица вашего приложения.Он не расширяет какую-либо часть Zend Framework.

Отношение между моделью и таблицей: HAS-A , а не IS-A .

class MyRegistryModel // extends nothing
{
  /**
   * @var Zend_Db_Table_Abstract
   */
  protected $_registryTable;

  /**
   * @var Zend_Db_Table_Abstract
   */
  protected $_namesTable;

  public function __construct()
  {
    $this->_registryTable = new RegistryTable();
    $this->_namesTable = new NamesTable();
  }

  public function getDailyReport()
  {
    // use the tables as needed to build the report
  }
}
1 голос
/ 16 мая 2010

Чтобы это работало, вам нужно настроить таблицу с зависимыми отношениями

registryTable->find(1)->current()->getDependentRowset($namesTable)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...