Вы можете добиться того, чего хотите, используя пользовательскую функцию :
use Doctrine\ORM\Query\AST\Functions\FunctionNode;
use Doctrine\ORM\Query\Lexer;
use Doctrine\ORM\Query\SqlWalker;
use Doctrine\ORM\Query\Parser;
class DateFunction extends FunctionNode
{
private $arg;
public function getSql(SqlWalker $sqlWalker)
{
return sprintf('DATE(%s)', $this->arg->dispatch($sqlWalker));
}
public function parse(Parser $parser)
{
$parser->match(Lexer::T_IDENTIFIER);
$parser->match(Lexer::T_OPEN_PARENTHESIS);
$this->arg = $parser->ArithmeticPrimary();
$parser->match(Lexer::T_CLOSE_PARENTHESIS);
}
}
Затем зарегистрируйте эту функцию в своем коде:
$em->getConfiguration()->addCustomDatetimeFunction('DATE', 'DateFunction');
И ваш DQL-запрос будет работать!
Пять вещей я ненавижу [приблизительно 119] Java (который, в настоящее время, является моим любимым языком), без определенного порядка.
C++
JavaScript:
Все самые прохладные вещи безумно сложны, но тогда, вся прохлада также обернута в таком небольшом количестве кода, за которым Вы чувствуете себя глупыми для попытки следовать, это
' +' является абсурдный выбор оператора для конкатенации на языке со слабым контролем типов. Они были попытка для отпугивания новичков?
Это - минное поле перекрестной совместимости браузера (не берите в голову, включено ли это даже или не)
, Это вообще недоверяемо - связанный с летним, таким как блокирование кнопки "Назад", всплывающие окна, которые никогда не умирают, и т.д.
, почти невозможно отладить, потому что существует только несколько различных сообщений об ошибках и несколько различных типов (Число, Строка, Объект, и т.д.)
, Если бы это не было для jQuery, я, вероятно, все еще ненавидел бы его так, как я привык для:)
PHP:
1) Вынуждает меня сделать ненужные переменные:
$parts = explode('|', $string);
$first = $parts[0];
2) Реализация лямбд, так хромых, это примерно эквивалентно использованию eval()
и таким образом, ужасно неправильно я никогда не использовал его (см. http://www.php.net/create_function).
3) Система попытки/выгоды, которая может только поймать приблизительно 80% ошибок, которые могли бы произойти.
4) Regex поддерживают так же, как Ламе как поддержка лямбды, потому что она должна быть записана внутренние обычные строки, делая один из большинства сложных для изучения инструментов программирования приблизительно в три раза более трудным. И PHP, как предполагается, является "легким" языком?!?!?
5) Никакой способ безопасно вытащить материал из $ _POST, не пишущий это дважды или создавая Вашу собственную функцию, или с помощью оператор:
$x = isset($_POST['foo']['bar']) ? $_POST['foo']['bar'] : null;
6) Бонусный ответ:. Если Вы не можете быть побеспокоены, пишущий Ваш код правильно, просто добавьте, и слишком плохо для любого, кто должен отладить Ваш код позже.
Ничего себе, я удивлен, что SQL еще не составил его здесь. Угадайте, что означает, что никто не любит его:)
... И несколько бонусных причин ненавидеть его, без всякой дополнительной оплаты
Smalltalk
$('#formId input, select, textarea')
возвратит весь input
элементы в форме, наряду с каждое избранное поле и текстовая область на странице .
– cHao
26 March 2013 в 20:22
Haskell:
($)
оператор мог быть изменен для создания некоторых выражений более симпатичными. Большинство из них не повышается до уровня ненависти, и существуют люди, пытающиеся зафиксировать или создать серьезные обходные решения для каждого из них.
Редактирование: был некоторый беспорядок о точке 5. В особенности некоторые люди, кажется, думают, что я имел в виду порядок аргументов, которые я не делаю. Вместо того, чтобы объяснять, что я имел в виду, я просто укажу на людей на следующую ссылку, http://hackage.haskell.org/trac/haskell-prime/wiki/ChangeDollarAssociativity , который выражает ее хорошо.
jobscry
? It' s тот же код он отправил. Для именно это комментарии.
– Shane Reustle
23 October 2010 в 18:52
Python:
C++
несоответствия в библиотеках, связанных с символом* и станд.:: строка. Весь C++ освобождает, должен взять станд.:: строки.
Символы не являются байтами относительно iostream. Я делаю большую байтовую работу. Наличие типа "байта" и "символьного" типа значительно сделало бы его более простым. Это также разрешило бы масштабироваться к несколько легче Unicode.
Битовые операции должны быть легкими на значении. Я должен быть в состоянии получить доступ и установить n'th бит значения, не играя И/ИЛИ танцуя.
отсутствие стандартизированного интерфейса для графический интерфейсов пользователя. Это - то, где Microsoft действительно была в состоянии расположить себя хорошо с C#. Стандартный интерфейс, связывающий, который обеспечивают производители ОС, пошел бы действительно далеко для моей работы.
Мой язык du подмастерье является Java. Вот то, что я ненавижу об этом:
5.) Отсутствие указателей
4.) Исключение, ловя
3.) Булев тип
2.) тип
1 BigDecimal.) фанаты C# и фанаты Java
Boolean
могут быть пустыми. Я нахожу это парадоксальным.
BigDecimal
библиотека и не функция языка. Мое раздражение с BigDecimal
и Exception
ловля происходит главным образом от записи тестовых классов, которые должны перейти через набор обручей, чтобы сделать фактическую работу. Я должен разъяснить, что раздражаюсь этими вещами, я не собираюсь лоббировать за изменения.
VBA (включая IDE MS Office):
1) Плохая Документация
2) Плохие сообщения об ошибках
3) Несоответствующие Стандартные программы Управления Массивом
4) Необходимость повторить типы для операторов DIM
5) не распечатает в цвете (должны купить стороннее дополнение)
синтаксис JavaScript
Функционального объекта:
f = new Function( "foo", "bar", "return foo+bar;" );
(Это берет n аргументы, первые n-1 являются аргументами в пользу функции, тогда энный фактическая функция, в строковой форме. Который просто глуп.)
Аргументы функции могут быть повторены.
f = new Function( "foo", "foo", "return foo;" );
последнее повторение является единственным, когда-либо используемым, хотя:
f( "bye", "hi" ) // returns "hi"
f( "hi" ) // returns undefined
E4X должен просто умереть. Мои пользователи всегда жалуются, что это не прокладывает себе путь, они думают, что это будет. Давайте столкнемся с ним при необходимости в полутора страницах psuedocode для метода set пора заново продумать вещи.
понятие стандарта А stdin/stdout/stderr (и файлы!) было бы хорошо.
пустой указатель! = неопределенный
Это является раздражающим для обработки их обоих. Иногда это полезно, но большинству языков удается хромать вдоль штрафа с одним.
У меня есть книга, исследуя все виды проектов в SNOBOL. Первая глава исследует историю и культуру вокруг программирования SNOBOL и языка и проводит некоторое время, приводя аргумент, что хорошему программисту нравится язык не из-за его дефектов, но в в злости из них.
Мой любимый язык Незначок Значка / . Но существуют все еще вещи, которые раздражают меня об этом:
explode()
и implode()
. Groovy/Grails
вывод типа F#
ограничен.
Это распространяет вперед только.
F# не попытается вывести тип объекта на основе методов и используемых свойств: Вы получите "поиск неопределенного типа объекта" ошибки, когда это не будет иметь подсказки.
нельзя смешать плавания и ints: 1 + 2.3 ошибка типа.
Это немного неудобно должным быть создать объект разработчика для определения выражения вычисления или монады. В Haskell или Scala, можно определить операции монады непосредственно на одноместном объекте.
, Хотя #light синтаксис предпочтен, правила добавления отступа иногда не очень интуитивны или становятся громоздкими.
Дельфи (иначе Object Pascal), я буду говорить о собственной версии, не.NET.
try except finally end;
слишком явное Создание объекта:
var obj: TMyObject;
...
obj := TMyObject.Create;
try
...
finally
obj.Free;
end;
Вместо этого что-то как [1 112]
auto obj: TMyObject; // compiler adds the default constructor call and the destructor call in a try/finally block.
i.ToString
вместо IntToStr(i)
. Python
__init__
sys.modules[__name__]
) 1-3: нет никакого одно очевидное выбор системы упаковки/сборки/документирования (такой как Perl cpan
, POD
или Ruby gem
, rake
, rdoc
).
4: Python 3.0 является достаточно несовместимым для требования двух исходных ответвлений (2.x и 3.x) для каждого проекта Python. Но Python 3.0 не достаточно несовместимый для выравнивания по ширине его. Большинство преимуществ py3k является слишком тонким.
5: Jython, IronPython, CPython являются несовместимыми.
VB.NET
AndAlso
/ OrElse
и And
/ Or
кажется назад. Возможно, они должны быть переключены. When
может только использоваться для ловли исключения. Способность сделать When
условное выражение была бы хороша для некоторых других вещей. Not <obj> Is Nothing
. Да, это было исправлено IsNot
, но по некоторым причинам я вижу Not Is
использоваться слишком часто. (Я вижу его намного более часто с devs, кто говорит на английском языке как на втором языке, это имеет лучший смысл от того угла?) ()
на [1 110] и большинство функций. (Приводит к неаккуратным привычкам кодирования) _
при повреждении строки. =
быть сравнением и оператор присваивания. ActionScript / AS3
Иначе, это - на самом деле хороший язык - намного лучше, чем JavaScript вопреки широко распространенному мнению, и миллион раз лучше, чем что-то как PHP.
JavaScript
Каждый сценарий выполняется в единственном глобальном 'пространстве имен'... что-то, что необходимо высматривать при работе со сценариями из других источников
, Если переменная используется, но не была определена перед рукой это считают глобальной переменной
поставщики Браузера, составляющие стандарты, как им нравится, делая кодирующий для нас разработчики, использующие такой красивый язык тяжелее, чем это должно быть
Чувствительность к регистру - полагающий, что нет никакого достойного IDE для разработки js со временем компиляции, проверяя
Обходные решения (такие как использование hasOwnProperty
метод) для выполнения некоторых, в других отношениях простых операций.
VB6
C/C++
неизменность Java
Python
MEL (Язык Выражения майя):
Они и несколько других причин - то, почему Autodesk принял Python как secondardy язык сценариев, который поднимает несколько других раздражающих факторов:
C#
Java
Отсутствие препроцессора в C#.
я знаю, что они пропустили его, потому что некоторые люди могут злоупотребить им, но я думаю, что они вывели ребенка с водой в ванне. Генерация кода рассматривается как хорошая вещь, и в C++ препроцессор был моим генератором первого линейного кода.
Объективное Отсутствие Caml
VB.NET
1), Если Не x Является "нечто" (вместо <> "нечто")
2) "OrElse" и короткое замыкание "AndAlso" (вместо просто "Или" и "И", которые действуют по-другому)
3) Ничто (вместо Пустого указателя)
Я использую Java, и моя самая большая говядина является неэффективностью строковых операций. когда Вы используете + оператор. Серьезно, разве компилятор не может выяснить, сколько строк я добавляю и затем генерирую материал StringBuffer в фоновом режиме для меня?
Часто код, который использует +, более читаем, чем последовательность операций StringBuffers.
кроме того, я ненавижу дублирование между собственными массивами и платформой набора. Синтаксис для .toArray () чрезвычайно ужасен.