如何根据手机号更新自定义对象中的所有者名称
How to update the owner name in custom object based on the mobile no
我需要根据自定义对象中不存在的手机更新所有者姓名。
在我的自定义对象中,字段名为 "Referral Id"。它包含手机号码,手机号码已经存在于用户 details.In 我需要根据推荐 ID(名称)更改所有者姓名的自定义对象。
例如,自定义对象是我自己创建的,但我将推荐 ID 设置为我的经理手机,然后它会自动将主要所有者更改为我的经理,而不是我。
我试试下面的触发器
trigger Ownerupdate on Broker__c (before insert,before update)
{
//instantiate set to hold unique deployment record ids
Set<Id> deplomentIds = new Set<Id>();
for(Broker__c s : Trigger.new)
{
deplomentIds.add(s.Referral_ID__c);
}
//instantiate map to hold deployment record ids to their corresponding ownerids
Map<Id, Referral_ID__c> deploymentOwnerMap = new Map<Id, Referral_ID__c>([SELECT Id, Phone FROM User WHERE Id IN: deplomentIds]);
for (Broker__c s : Trigger.new)
{
if (s.Owner__c == null && deploymentOwnerMap.containsKey(s.Referral_ID__c))
{
s.Owner__c = deploymentOwnerMap.get(s.Referral_ID__c).OwnerId;
}
}
}
我收到以下错误
错误:编译错误:无效类型:第 11 行第 62 列 Referral_ID__c
错误很明显 - 您正在尝试构建 Id
和 Referral_ID__c
类型的映射。 Referral_ID__c
不是类型,它是字段的名称。字段的类型可能是 String
或 Phone
,无论您在创建字段时选择哪个。
您还有其他问题。例如
Set<Id> deplomentIds = new Set<Id>();
for(Broker__c s : Trigger.new)
{
deplomentIds.add(s.Referral_ID__c);
}
错了。 deplomentIds
是一组类型 Id
,但您正在尝试向其中添加移动 phone 号码。 Phone 数字不是 ID。
您应该做的是查询与您的 ReferralId 匹配其手机号码的用户并将他设置为所有者。类似于:
for(Broker__c s : Trigger.new)
{
User owner = [SELECT Id FROM User WHERE MobilePhone = :s.Referral_ID__c LIMIT 1];
s.Owner__c = owner.Id;
}
这假设保证有一个用户使用该确切的手机号码。您如何处理无法找到的推荐人或多个匹配推荐人的用户,由您决定。
我需要根据自定义对象中不存在的手机更新所有者姓名。
在我的自定义对象中,字段名为 "Referral Id"。它包含手机号码,手机号码已经存在于用户 details.In 我需要根据推荐 ID(名称)更改所有者姓名的自定义对象。
例如,自定义对象是我自己创建的,但我将推荐 ID 设置为我的经理手机,然后它会自动将主要所有者更改为我的经理,而不是我。
我试试下面的触发器
trigger Ownerupdate on Broker__c (before insert,before update)
{
//instantiate set to hold unique deployment record ids
Set<Id> deplomentIds = new Set<Id>();
for(Broker__c s : Trigger.new)
{
deplomentIds.add(s.Referral_ID__c);
}
//instantiate map to hold deployment record ids to their corresponding ownerids
Map<Id, Referral_ID__c> deploymentOwnerMap = new Map<Id, Referral_ID__c>([SELECT Id, Phone FROM User WHERE Id IN: deplomentIds]);
for (Broker__c s : Trigger.new)
{
if (s.Owner__c == null && deploymentOwnerMap.containsKey(s.Referral_ID__c))
{
s.Owner__c = deploymentOwnerMap.get(s.Referral_ID__c).OwnerId;
}
}
}
我收到以下错误 错误:编译错误:无效类型:第 11 行第 62 列 Referral_ID__c
错误很明显 - 您正在尝试构建 Id
和 Referral_ID__c
类型的映射。 Referral_ID__c
不是类型,它是字段的名称。字段的类型可能是 String
或 Phone
,无论您在创建字段时选择哪个。
您还有其他问题。例如
Set<Id> deplomentIds = new Set<Id>();
for(Broker__c s : Trigger.new)
{
deplomentIds.add(s.Referral_ID__c);
}
错了。 deplomentIds
是一组类型 Id
,但您正在尝试向其中添加移动 phone 号码。 Phone 数字不是 ID。
您应该做的是查询与您的 ReferralId 匹配其手机号码的用户并将他设置为所有者。类似于:
for(Broker__c s : Trigger.new)
{
User owner = [SELECT Id FROM User WHERE MobilePhone = :s.Referral_ID__c LIMIT 1];
s.Owner__c = owner.Id;
}
这假设保证有一个用户使用该确切的手机号码。您如何处理无法找到的推荐人或多个匹配推荐人的用户,由您决定。