Вы можете преобразовать текущее время, подобное этому
t=datetime.fromtimestamp(time.time())
t.strftime('%Y-%m-%d')
'2012-03-07'
. Преобразование даты в строку в разные форматы.
import datetime,time
def createDateObject(str_date,strFormat="%Y-%m-%d"):
timeStamp = time.mktime(time.strptime(str_date,strFormat))
return datetime.datetime.fromtimestamp(timeStamp)
def FormatDate(objectDate,strFormat="%Y-%m-%d"):
return objectDate.strftime(strFormat)
Usage
=====
o=createDateObject('2013-03-03')
print FormatDate(o,'%d-%m-%Y')
Output 03-03-2013
Короче говоря, это возможно.
Если у вас есть структура папок внутри папки Entity вашего пакета, это просто. Вы должны называть файлы ORM, используя часть пространства имен объекта ниже пространства имен Entity и заменяя \
на .
.
Итак, если, например, у вас есть Project\TestBundle\Entity\Place\Type
объект, файл ORM (расположенный в папке config/doctrine
внутри пакета] будет иметь имя Place.Type.orm.yml
.
Если вы хотите для использования в качестве классов объектов Doctrine извне папки Entity (или даже вне папки пакета), она становится немного сложной, но все же возможна. Doctrine Bundle позволяет определять пользовательские местоположения сопоставления для ваших классов в конфигурации.
Опять же - пример. Если у вас есть сущности внутри пространства имен Project\Test
(в папке src/Project/Test
), вы можете определить отображение следующим образом:
app / config / config * .yml
blockquote>doctrine: orm: MyCustomDomain: mapping: true type: yml dir: %kernel.root_dir%/config/projecttest alias: ProjectTest prefix: Project\Test is_bundle: false
На самом деле Doctrine Bundle делает что-то подобное автоматически, поэтому вы можете поместить все свои классы в подпапку Entity и больше не бояться.
Префикс - это префикс пространства имен. Папка - это путь к папке с файлами конфигурации. Псевдоним интересен - он позволяет использовать более простые имена объектов в DQL-запросах и файлах сопоставления. Синтаксис Symfony
TestBundle:Test
работает в одной и той же предпосылке -TestBundle
является псевдонимом для всех объектов в TestBundle.is_bundle
сообщает Doctrine, что сущности находятся за пределами пакета Symfony и требуют немного другого обращения.Есть некоторые оговорки в определении вашего собственного сопоставления. Mapper работает с использованием правила «первого совпадения» на префиксе. Поэтому, если вы объявляете свое сопоставление с слишком широким префиксом пространства имен, оно может переопределять другие сопоставления.
Тем не менее, это полезно иногда. Например, если вы хотите отображать классы из «зарубежной» библиотеки непосредственно в Doctrine. Или создайте библиотеку, не полностью привязанную к Symfony, и хотите сохранить некоторые из ваших классов за пределами пакета.
Если вы хотите упорядочить свои сущности доктрины в подпапки
, например: src/AppBundle/Entity/subfolder/MyEntity.php
, то соответствующий файл ORM должен выглядеть так:
src/Resources/config/Doctrine/subfolder.MyEntity.orm.yml
Не вставляйте вложенные папки внутри src/Resources/config/Doctrine/
*
* Примечание: если вы посмотрите на документы документации Doctrine , это выглядит так может быть возможно настроить другое местоположение для вашего файла orm.yml, используя:
doctrine:
orm:
# An array of mappings, which may be a bundle name or something else
mapping_name:
mapping: true
type: ~
dir: ~
alias: ~
prefix: ~
is_bundle: ~
, но я этого не пробовал. может быть, кто-то еще может подтвердить, чтобы улучшить этот ответ?