#php #sql #symfony #orm #doctrine
#php #sql #symfony #orm #doctrine
Вопрос:
Я новичок в Doctrine Query Builder и пытаюсь понять, как использовать его вместе с Symfony:
$queryBuilder
->select('u.id', 'u.name')
->from('users', 'u')
->where('u.email = ?')
;
В этом сценарии, что означает ‘u’?
Комментарии:
1. Документация создана только для этого.
2. @gp_sflover Я уверен, что в какой-то момент вы просите разъяснений даже после прочтения документации.
3. Крис: вы правы в том, что новичкам часто нужны разъяснения. Однако мне интересно, правильно ли также указано @gp_sflover: читатели здесь горячо рекомендуют ознакомиться с документацией и предварительными исследованиями в целом. Хороший способ задавать вопросы такого типа — сказать: «Я обнаружил из документации, что второй параметр является псевдонимом таблицы, но я не уверен, какова цель этого и является ли это обязательным». Это покажет читателям, что вы сначала приложили серьезные усилия, и иногда вы получите за это положительные отзывы, а также больше читателей, готовых дать развернутые ответы.
4. @halfer да, я понимаю, спасибо, что подтолкнули меня, ребята. Одна вещь, которую я люблю в stackoverflow. Но я прочитал документы, мне просто трудно понять Doctrine и построить с помощью querybuilder, мой ведущий попросил меня создать команду symfony, которая запускает sql-запрос, а затем добавить ее в качестве cronjob. Я знаю sql и php, но мне трудно разобраться в Doctrine.
5. @halfer указал именно на мою точку зрения, фактически мой комментарий был строго связан с частью «что означает ‘u’?», потому что это четко описано в документах :-). Я буду рад помочь вам, Крис, с вашим следующим (лучше сформулированным) вопросом :-)))
Ответ №1:
u
это так называемая идентификационная переменная или псевдоним, который ссылается наMyProjectModelUser
класс. Помещая этот псевдоним вSELECT
предложение, мы указываем, что хотим, чтобы все экземплярыUser
класса, которым соответствует этот запрос, отображались в результате запроса
Doctrine имеет отличную документацию, вы можете обратиться к ней здесь
Комментарии:
1. итак, теоретически, мы могли бы опустить ‘u’?
2. Да, в таком простом запросе, как этот, вы можете, идентификация в основном используется при переходе к объединениям.
3. У меня такое ощущение, что DQL требует псевдонимов, но я не уверен. Что касается построителя запросов, я думаю, что псевдонимы были обязательными, но я думаю, что это было изменено в 2.5.
4. @Chris Вы могли бы опустить ‘u’ в таком маленьком и простом запросе, как этот, но я предлагаю вам выработать привычку использовать псевдонимы. Когда запросы станут более сложными, вы будете благодарны. .
Ответ №2:
‘u’ ссылается на таблицу ‘users’. Другими словами, ‘u’ — это псевдоним.
итак, ‘u.email’ — это столбец с именем ’email’ из таблицы ‘users’.