Введение
При разработке Salesforce для запроса данных из базы данных Salesforce используется SOQL (язык объектных запросов Salesforce). Родительские запросы SOQL специально разработаны для извлечения записей из родительского объекта в отношениях родитель-потомок. В этой статье мы рассмотрим различные методы выполнения родительских запросов SOQL, а также приведем примеры кода, иллюстрирующие их использование.
Метод 1: базовый родительский запрос
Самый простой метод получения родительских записей — использование базового родительского запроса. Этот метод включает в себя запрос дочернего объекта и включение поля связи для доступа к родительским записям. Вот пример:
List<Account> accounts = [SELECT Id, Name, (SELECT Id, Name FROM Contacts) FROM Account];
В этом фрагменте кода мы получаем список учетных записей и связанных с ними контактов. Часть запроса (SELECT Id, Name FROM Contacts)позволяет нам получить доступ к связанным контактам для каждой учетной записи.
Метод 2: использование имен связей
Salesforce предоставляет имена отношений для упрощения запроса родительских записей. Эти имена являются производными от имени API поля отношений и добавляются к ним с помощью «__r». Вот пример:
List<Contact> contacts = [SELECT Id, Name, Account.Name FROM Contact];
В этом запросе мы напрямую обращаемся к родительскому объекту Account, используя имя связи Account. Добавив .Name, мы можем получить имя учетной записи для каждого контакта.
Метод 3: использование точечной записи
Точечная нотация в SOQL позволяет нам просматривать отношения между объектами и получать доступ к родительским записям. Вот пример:
List<Case> cases = [SELECT Id, Subject, Account.Name FROM Case];
В этом запросе мы извлекаем случаи, а также получаем доступ к связанному объекту Account, используя точечную нотацию Account.Name. При этом будет получено имя учетной записи для каждого случая.
Метод 4: подзапрос от родителя к дочернему элементу
В некоторых случаях нам может потребоваться получить родительскую запись вместе со всеми ее дочерними записями в одном запросе. Мы можем добиться этого, используя подзапрос от родителя к дочернему элементу. Вот пример:
List<Account> accounts = [SELECT Id, Name, (SELECT Id, LastName FROM Contacts) FROM Account];
В этом запросе мы извлекаем аккаунты вместе со связанными с ними контактами. Подзапрос (SELECT Id, LastName FROM Contacts)извлекает все контакты, относящиеся к каждой учетной записи.
Заключение
В этой статье мы рассмотрели несколько методов выполнения родительских запросов SOQL в Salesforce. Мы рассмотрели основные родительские запросы, используя имена отношений, запись через точку и подзапросы «родитель-потомок». Понимание этих методов поможет вам эффективно извлекать родительские записи и связанные с ними данные в приложениях Salesforce.
Не забывайте оптимизировать запросы с учетом конкретных вариантов использования, чтобы повысить производительность. Приятного кодирования!