如何从顶点的ID中获取对象

时间:2015-04-08 09:58:52

标签: salesforce apex

我有一个自定义对象1(Lent_c在图书馆中借出的书籍列表。它有2个字段书籍查找和人物查找),其中2个查找字段有另一个自定义对象2(书籍对象。它有3个字段数量,数量在查找领域中借用了字段和ISBN)。我试图使用object1更改object2中的值。这是我正在使用的代码。

trigger Book_lentout on Lent__c (before insert) {
    for(Lent__c l:Trigger.new)
    {
        Book__c k =  l.Book_Details__c;
        k.Books_Borrowed__c++;

    }

}

它给我一个错误错误:编译错误:在第4行第9列从Id到Book__c的非法分配

从我理解的返回ID而不是Book__c对象类型

1 个答案:

答案 0 :(得分:1)

对于上面的代码,不需要为此代码编写代码 - 只需在Book对象上添加一个汇总字段,该字段汇总了Lent项目的数量。

至于你的实际问题,只要你知道你正在寻找什么类型的对象,你的上述代码就是: Book_c book = new Book__c(Id = l.Book_Details__c);

现在,你必须进行查询才能获得借来的书籍数量,这样你就可以增加1,所以你必须在收集所有id之后发出一个soql查询。所以这是学习的完整解决方案。         触发Lent__c上的Book_lentout(插入前){

        Id[] bookIds = new List<Id>();
        for(Lent__c lent : Trigger.new)
        {
            bookIds.add(l.Book_Details__c);
        }

        Book__c[] books = [select Books_Borrowed__c from Book__c where Id in :bookIds];
        for (Book__c b : books) {
            b.Books_Borrowed__c += 1;
        }

    }

这甚至都没有完成,因为你可以为每本书提供多个借出记录,但是你得到了jist(我希望)。但同样,你应该通过汇总领域来做到这一点。