Как мне получить комментарий к определенному столбцу с помощью Doctrine ORM

#php #orm #doctrine

#php #orm #doctrine

Вопрос:

Есть ли способ получить комментарий столбца (например, из таблицы INFORMATION_SCHEMA.COLUMN в MySQL) из определенной таблицы без фактического «жесткого кода» запроса с помощью Doctrine ORM?

Ответ №1:

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

 //lets say we have a table named 'product'
//and we want to get the comment from the 'name' column
//first we get a list of columns from 'product'
$columns = $this->getDoctrine()->getEntityManager()->getConnection()->getSchemaManager()->listTableColumns('product');
//then we just access getComment function from the 'Column' class
//for the 'name' column:
echo $columns['name']->getComment();
  

Ответ №2:

Я сомневаюсь в этом, и то же самое относится и к Propel. Оба используют PDO, и afaik для этого нет способа, не зависящего от базы данных.

Для достижения этой цели вы часто можете запрашивать столбцы таблицы с помощью операторов SELECT в системных таблицах (конечно, Oracle и PostgreSQL позволяют это). Однако названия задействованных таблиц отличаются у разных поставщиков. Вот как получить имена столбцов, например, в PostgreSQL — получение комментариев, вероятно, было бы очень похоже.

Для ORM было бы вполне возможно предложить то, что вы хотите, но базовой реализацией будет подход, который я описал выше. Возможно, вы могли бы запросить его в списке рассылки Doctrine?

Комментарии:

1. Во-первых, спасибо за ваши усилия. Ну, внутренне сердце ORM — это «Информационная схема» многих баз данных, которые они абстрагируют, как вы указали выше, как «системные таблицы» из Oracle и PostgreSQL. Например, когда ORM перепроектирует вашу базу для создания сопоставления (как это делает Propel), Они получают имена столбцов, внешние ключи, имена таблиц и т.д. Из информационной схемы, и я знаю, что вы также можете получить комментарий к столбцу оттуда. Вопрос в том, как Doctrine это делает

2. Ах, хорошая мысль. Быстрый просмотр исходного кода DBAL приводит к строке 284 здесь — и, о чудо, включает поиск комментариев к столбцу. Отлично!