2014-01-21 40 views
0

我有三個表公司,組和company_group。Datamapper與codeigniter保存多對多的關係

我在保存公司時從帖子中獲取值。

在我的公司形式,我有多個選擇框,其中有一個組列表。

我的公司正在保存正確的盟友,但現在我想在company_group表中添加最後插入的公司ID和選定的組的記錄。

我已經在公司和組中都設置了has_many,但無法在company_group表中保存多個記錄,所以請幫助我解決這個問題。

公司模型

class Company extends DataMapper { 
var $has_one=array("group"); 
function __construct() { 
    parent::DataMapper(); 
} 
} 

組模型

class Group extends DataMapper { 
var $has_many=array("company"); 
function __construct() { 
    parent::DataMapper(); 
    } 
} 

公司負責

class Company_c extends CI_Controller { 
public function index() { 

    $company = new company(); 
    $group=new group(); 
    $company->id=1; 
    $group->id=2; 
    $group->id=4; 
    $company->save($group); 

    } 

} 

請幫我這個

回答

1

你不加載公司或O型正確地佩戴。當你實例化一個公司,你需要做的:

$company = new Company(); 
$company->where('id', 1)->get(); 

,更快的簡寫(只要您使用id屬性):

$company = new Company(1); 

(請注意,類名區分大小寫)。

那麼你就用你要加載的組(S)是相同的:

$groups = new Group(); 
$groups->where_in('id', array(2, 4)->get(); 

然後,這兩個被實例化時,你可以保存該公司及其集團(收費)一氣呵成:

$company->save($groups); 

確保你通過DataMapper的文檔徹底,它不能真正可以更清楚地解釋道: http://datamapper.wanwizard.eu/pages/save.html#Relationship

+0

感謝戰利品我解決它已經:-) –