Я хочу написать расширение ГИС (геопространственных данных) для моего проекта Doctrine 2.
Я знаю, как писать простые пользовательские функции и типы. Чтобы приспособиться к специальному формату хранения MySQL, мне нужно использовать некоторую функцию SQL (GeomFromWKB () и AsBinary ()) при получении / хранении данных.
Я не могу найти место, где я расскажу об этом доктрине 2. Как я вижу, методы convertToPHPValue () и convertToDatabaseValue () не являются подходящим местом.
Если вы хотите вызвать функцию SQL в doctrine2, вы можете сделать это Expression Func, но это будет работать только с DQL.
Здесь у вас есть пример, который расскажет вам, как использовать функцию DATE_DIFF, которая не включена в доктрину.
$qb = $repository->createQueryBuilder('l'); $qb->expr()->lte(new Doctrine\ORM\Query\Expr\Func('DATE_DIFF',array('lo.start_date', 'CURRENT_DATE()')),'0');
То, что я выяснил до сих пор: согласно каналу IRC, convertToPHPValueSQL () и convertToDatabaseValueSQL () будут частью следующей версии и будут предлагать необходимые функции. Как только это доступно, определение CustomType довольно просто.
Обновление / Альтернатива:
Я нашел расширение symfony2, которое удовлетворяет большинство моих потребностей. Я разветвил его и добавил, что мне нужно здесь: