В MVC можно ли подключать библиотеку к базе данных и выполнять запросы? - PullRequest
0 голосов
/ 10 августа 2009

Из самого вопроса:

class User
{
public function getByName($username)
{
//queries here
}

public function getById($id)
{
//queries here
}

}

Ответы [ 3 ]

1 голос
/ 10 августа 2009

Нет. Организация не должна знать о каких-либо базах данных или другой внешней информации. Для этого вы должны использовать какой-нибудь O / R-Mapper - как Doctrine .

0 голосов
/ 10 августа 2009

Учитывая, что ваш класс "User" является классом Model, я думаю, что все будет в порядке ...

Но, тем не менее, вы можете пойти немного дальше, добавив новый слой, и использовать:

  • класс Model (User) для хранения пользовательских данных , видимых приложением , и соответствующих бизнес / логических правил
  • класс, который имеет дело с хранилищем этих данных (что-то вроде UserFinder, я полагаю)
    • конечно, что бы «знать» класс User и заполнить его данными из БД
    • и вставка / обновление / удаление «пользовательских» объектов в / из БД

Таким образом, ваш класс User не должен знать, как он хранится: это может быть БД, а XML-файл, плоский файл, в любом случае, ваш класс User будет таким же.

Чтобы упростить задачу, вы можете использовать ORM Framework; один действительно хороший в PHP это Doctrine .

0 голосов
/ 10 августа 2009

Да, это правильно. Модели (в данном случае User) - это слой в MVC, который связывает контроллеры с базой данных, поэтому они фактически создают SQL-запросы, выполняют их, интерпретируют результаты и затем передают проанализированные данные.

Однако если вы используете некоторые фреймворки PHP, эта часть в большинстве случаев воспринимается как фреймворк. Например, в CakePHP у вас есть «виртуальные» методы, такие как findByName, findById и т. Д. Для каждого поля в таблице базы данных, на которую ссылается модель. Поэтому, если вы используете фреймворк, вы можете сначала проверить, не предоставляет ли он аналогичные методы, прежде чем писать свой собственный.

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