0

次のエラーが発生します

エラー:コンパイルエラー:エンティティ'Lead'にそのような列'Owner'はありません。カスタムフィールドを使用する場合は、カスタムフィールド名の後に必ず「__c」を追加してください。適切な名前については、WSDLまたはdescribe呼び出しを参照してください。8行17列目

trigger Lead_Assignment on Lead (after insert) {

     List<Lead> le=trigger.new;
     User us=le.get(0).CreatedBy;
    List<User> u=[SELECT id from USER WHERE At_Work__c=true];    
    List<integer> ii=new List<Integer>();
    for(User uu:u){
    Integer xx= [SELECT count() from Lead WHERE Owner=:uu];


    }



}

リードオブジェクトにOwnerという名前のフィールドがあり、なぜこのエラーが発生するのか、このエラーの解決にご協力ください。

4

1 に答える 1

6

以下のようなクエリを使用したほうがよいと思います。

Integer xx= [SELECT count() from Lead WHERE OwnerId=:uu.Id];

リードオブジェクトのOwnerフィールドは、実際には所有者ユーザーオブジェクトへの参照です。通常、以下のようなクエリを実行すると、これが入力されます。

[SELECT id, Owner.Name, Owner.Email FROM Lead]

また、所有者フィールドにアクセスするには、リードオブジェクトの所有者プロパティにアクセスします。

Lead myLead = [SELECT Id, Owner.Name, Owner.Email FROM Lead limit 1];
System.debug(myLead.Owner.Email);

ただし、ここにはもっと大きな問題があります。このようなループ内でクエリを実行することはベストプラクティスではありません。次のような集計クエリを使用することをお勧めします。

 AggregateResult[] results = [SELECT COUNT(ID), OwnerId FROM LEAD GROUP BY OwnerId WHERE OwnerId IN :listOfUserIds]
于 2012-08-23T01:59:10.900 に答える