如何根据手机号更新自定义对象中的所有者名称

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

错误很明显 - 您正在尝试构建 IdReferral_ID__c 类型的映射。 Referral_ID__c 不是类型,它是字段的名称。字段的类型可能是 StringPhone,无论您在创建字段时选择哪个。

您还有其他问题。例如

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;
}

这假设保证有一个用户使用该确切的手机号码。您如何处理无法找到的推荐人或多个匹配推荐人的用户,由您决定。