За последние 24 часа нас посетили 18513 программистов и 1606 роботов. Сейчас ищут 935 программистов ...

PHP ORMs - вопросы по Doctrine

Тема в разделе "PHP и базы данных", создана пользователем TLoD_snake, 21 фев 2011.

  1. TLoD_snake

    TLoD_snake Активный пользователь

    С нами с:
    21 фев 2011
    Сообщения:
    2
    Симпатии:
    0
    1. Есть люди, называющие таблички с префиксом проекта, то есть допустим проект у нас зовется murzik и таблицы в БД названы соответственно murzik_article, murzik_user, murzik_issues. Оставляя в стороне адекватность таких наименований, Propel вполне себе способен исправить эту беду используя опцию phpName, где мы уже на уровне ORM определяем что класс статьи у нас зовутся Article и выборка будет осуществляться как Article::doSelect(...), а не $artsCreatedToday = Doctrine_Core::getTable('murzik_article')->getCreatedToday();
    Или я не прав и в getTable идет пареметром не имя таблицы, а алиас, который где-то мапится?

    2. Есть ли аналог Criteria, для универсального метода уточнения запроса?
    К примеру:
    // все котята, которых можно продать
    Cat::doSelectSellableKittens();
    // только зеленоглазые
    $c = new Criteria();
    $c->add(KittenPeer::EYE_COLOR, 'green');
    Cat::doSelectSellableKittens($c);

    3. Есть ли общая точка выполнения запроса, такая как doSelectStmt в Propel, где я могу для всего аппликейшена устроить фильтрацию по своему усмотрению?

    4. Смогу ли я используя Doctrine прозрачно для всей модели сменить в базе название поля, ограничившись лишь правкой маппинга имени поля в классе таблицы? Пример, как это устроено в Propel:
    Код (Text):
    1.  
    2. /** the column name for the F_ENABLED field */
    3. // было так:
    4. //const F_ENABLED = 'murzik_article.F_ENABLED';
    5. //Стало так:
    6. const F_ENABLED = 'murzik_article.IS_ENABLED';
     
  2. TLoD_snake

    TLoD_snake Активный пользователь

    С нами с:
    21 фев 2011
    Сообщения:
    2
    Симпатии:
    0
    1. Алиас. Решается в schema.yml

    Что, совсем нету людей, работающих с ОРМами? :)