2013-07-20 88 views
0

我想要什麼?在sugarcrm中獲取一個模塊的ID到另一個模塊

我想將一個模塊的Id插入另一個模塊。

描述: -

我已經創建了兩個模塊1.發票2.付款。這兩個模塊之間有一對多的關係。

現在我使用邏輯掛鉤來計算付款數據。 但我的問題是我的總金額字段是在語音模塊中。如果我使用發票模塊的硬編碼,它可以正常工作。

,但我沒有從$豆

的var_dump($豆)獲取當前記錄的ID返回NULL

代碼:

<?php 

// prevents directly accessing this file from a web browser 
if(! defined('sugarEntry') || ! sugarEntry) 
    die('Not A Valid Entry Point'); 


class Process 
{ 

    function process(&$bean, $event, $arguments) 
    { 

    $focus = new invoi_invoice(); 
    $id='d5112b7d-2e75-cba5-0e72-51e8ed34dcb7'; 


    $a=$focus->retrieve($id); 
    $b=$a->totalamount; 

    // calculate item profit 
    $bean->t_remaing_amount_c = ($b - $bean->t_amount_paid_c); 

    // calculate sale profit 
    if(!empty($bean->t_no_of_rooms_c)) 
    { 
     $bean->t_amount_per_room_c= ($bean->t_total_amount_c/$bean->t_no_of_rooms_c); 
    } 

    } 

} 

?> 

此代碼工作完美的,因爲ID是硬編碼的。當我使用$ bean-> id來獲取記錄的id時,它實際上不起作用var_dump($ bean); retun空值。

請幫我拿取當前記錄的id。

回答

1

首先關於你的句子都有些詞:

when I use $bean->id to fetch id of record it does not work actually var_dump($bean); return null value

據我所知你在付款模塊使用邏輯掛鉤。因此,Process :: process()中的$ bean參數引用Payment模塊中的記錄。無法想象,爲什麼您需要獲取當前記錄的id(即Payment類的實例),如果它已經作爲函數參數傳遞給引用。在你的例子中,你硬編碼了發票模塊記錄的ID。那麼您實際上需要檢索哪個模塊記錄?希望你真的需要發票模塊一個。所以我們在這裏有一個案例來獲取父母記錄。關於這一點稍後。

我認爲你的var_dump()調用返回null的原因是你在before_save邏輯鉤子中使用它。 「保存前」意味着重點bean仍然沒有'id'屬性,因爲......它還沒有被保存!如果你看看SugarBean :: save()方法,你會發現'id'屬性(實際上是UUID的形式)是通過在該方法中調用create_guid()函數來生成的。既然你不調用$ bean-> save(),你沒有一個id屬性。如此清楚。

返回抓取父記錄。

有很多方法可以做到這一點。

  • 在我的一箇舊項目中,我使用SugarBean :: get_linked_beans()方法獲取父記錄的數組(由一對多關係中的一個元素組成)。
  • Here您可能會發現如何使用其他SugarBean類方法獲取父記錄的一些想法。
  • 嘗試探索$ _REQUEST全球找到保留父記錄ID的密鑰
  • 查看緩存/ MODULE_NAME/BEAN_NAMEvardefs。php文件,並嘗試找到'type'=>'link'和'relationship'鍵的字段定義,該鍵以您的一對多關係命名。我的意思是這樣的:

    'invoices_s892lyment_ida' => 
    
        array(
    
        'name' => 'invoices_s892lyment_ida', 
    
        'type' => 'link', 
    
        'relationship' => 'invoices_payments', 
    
        'source' => 'non-db', 
    
        ... 
    
        ); 
    

然後你可以使用類似:

$invoice = new Invoice(); 

$invoice->retrieve($bean->invoices_s892lyment_ida); 
+0

首先感謝主席先生給我一個建議,無論你瞭解所有的事情是正確的。 – ajaykumar

+0

當我使用$ invoice = new invoi_invoice(); $ id = $ invoice-> retrieve($ bean-> invoi_invoice_t_hotel_payment_1invoi_invoice_ida);它給了我警告:mysqli_real_escape_string()期望參數2是字符串,對象在第254行在/drive2b/current/sugarhotel.devprolive.com/code/include/database/MysqliManager.php中給出 可捕獲致命錯誤:類Link2的對象無法轉換爲2293行的/drive2b/current/sugarhotel.devprolive.com/code/data/SugarBean.php中的字符串 – ajaykumar

+0

感謝您完成$ _REQUEST。 – ajaykumar

相關問題