Что делает второй параметр при вызовах Doctrine Query Builder?

#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’.