Создание слоя модели с PDO - PullRequest
3 голосов
/ 17 мая 2011

Я в настоящее время разрабатываю прикладную среду MVC, и я пришел за некоторыми советами относительно того, как я должен построить свои слои модели.

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

  • Конфигурация
  • Темы
  • Форумы

, и каждое из них будет сопоставлено стам назван PHP-файл, такой как app/models/configuration.php

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

class PDOModel
{
    public function __construct()
    {
        $this->__Communicator = Registry::getPDOInstance();
    }

    public function getSingle($id)
    {
         return /*Row*/;
    }

    /*Etc*/
}

А потом что-товот так для

class Model_Topic extends PDOModel
{
    protected $__id_column = 'id';
}

модели приложения, а затем в моем контроллере я могу использовать так:

$Topic = $this->model->topic->get(22);

Но я также хотел бы принять во внимание автоматическое объединение таблиц,Существуют ли какие-либо простые облегченные библиотеки, которые были протестированы и соответствуют моим требованиям.

Любая помощь будет высоко оценена.

Ответы [ 2 ]

5 голосов
/ 17 мая 2011

Ваш базовый класс модели не должен наследоваться от класса доступа к базе данных.Скорее, он должен использовать класс базы данных (или картограф, который говорит, что это всегда должна быть база данных?), А затем предоставлять методы ORM (get, insert, update и т. Д.)

Как уже писали другие, вы должны использовать одно из множества готовых решений.Что касается поиска облегченного ORM, то другие уже спрашивали об этом раньше.Вот ссылка на один из этих вопросов:

https://stackoverflow.com/questions/1995834/looking-a-lightweight-php-orm

0 голосов
/ 17 мая 2011

Самым близким, что я видел, является Zend_Db, который реализует шлюзы Table и Row поверх PDO. Он поддерживает объединение связанных таблиц, а что нет.

Как правило, то, о чем вы просите, не будет таким «легким», как полная ORM. Лично на твоем месте я бы просто пошел с приличным ОРМ. Propel> = 1.5, Доктрина 1.2 или Доктрина2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...