очень универсальные PHP динамические запросы - PullRequest
0 голосов
/ 09 декабря 2011

Я пытаюсь абстрагировать столько же логики в моих классах PHP с самого начала. У меня есть имена всех таблиц базы данных в качестве переменных в моем классе DBConnection. Например, когда пользователь вызывает $db = new DBConnection();, он автоматически создает переменные для всех имен таблиц, поэтому во всех запросах, которые у меня есть, у меня есть такие вещи, как INSERT INTO $db->userTable (fields and constraints) или SELECT (fields) FROM $db->forumTable (constraints). Однако, как было бы хорошим способом абстрагировать имена столбцов, если они очень универсальны, чтобы я не мог жестко кодировать имена столбцов в запросах? так что если что-то вроде имен столбцов или чего-то изменилось, мне не нужно возвращаться и редактировать кучу запросов? Спасибо за любой вклад!

Ответы [ 2 ]

1 голос
/ 09 декабря 2011

В Google Appengine есть язык запросов, и у них хорошая реализация query class. может быть, вы можете следовать аналогичной структуре ...

Синтаксис выглядит примерно так:

class Song(db.Model):
    title = db.StringProperty()
    composer = db.StringProperty()
    date = db.DateTimeProperty()

query = Song.all()
query.filter('title =', 'Imagine')

Ссылка, Класс запросов AppEngine

1 голос
/ 09 декабря 2011

Напишите модель базы данных на каком-либо языке (возможно, по вашему выбору), в зависимости от конкретного языка.Используйте эту модель для генерации вашей схемы MySQL и любой промежуточной модели или API, которые вы хотите предложить в PHP.

Модель может включать такие вещи, как имена «сущностей» (не обязательно таблиц perse)свойства и их тип (число, текст, перечисление, ссылка).

MySQL уже очень техническая реализация, и манипулировать ей не очень легко.Язык, специфичный для предметной области, значительно поможет в моделировании и согласованности данных, потому что вы получаете столько бесплатно.Вы свободны от всех деталей MySQL, таких как CHAR, VARCHAR, TEXT, MEDIUMTEXT, LONGTEXT, BLOB.Для действительно общих приложений вы не хотите думать об этом.

Обновление: Вы хотите «абстрагировать свою логику».Вы должны начать с абстрагирования вашей модели данных.Есть модель, которую вы можете преобразовать в запросы MySQL, которые будут строить вашу базу данных.Вы можете использовать ту же модель для генерации API в PHP.Ваша модель знает, какие существуют сущности (таблицы) и какие свойства и какого типа, чтобы вы могли применять их в PHP.

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