填写关系一对多的表 - 多对一

时间:2016-06-18 14:13:23

标签: php mysql mysqli

我有3张桌子'公司','公司_官员','警官'。公司是独一无二的,官员是独一无二的,但是官员可以为不同角色的多家公司工作公司(1) - (很多)公司_官员(很多) - (1)官员。

公司:

Company_ID
Company_Name

Company_Officer:

Company_Officer_ID
Company_ID
Officer_ID
Officer_Role

官:

Officer_ID
Officer_Name

以下是我填写公司和公司的方法。官员表

foreach($YQL->getConstituents() as $key=>$companyName){
    $company[$key] = new Company($companyName);
    if($company[$key]->getCompanyFound()==true){
        array_push($Company_Details,array($company[$key]->getCompanyName(),$company[$key]->getCompanyNumber(),"FTSE 100"));
        foreach ($company[$key]->getCompanyOfficers() as $officer){
            array_push($Officer_Details,array($officer[0],$officer[2]));
        }
    }
}
$Company_Details = array_unique($Company_Details, SORT_REGULAR);
$Officer_Details = array_unique($Officer_Details, SORT_REGULAR);

$DAO->insertMultiOnDuplicateData("Company_Details", array("Company_Name","Company_Number", "Company_Index"), $Company_Details, array("Company_Index"));
$DAO->insertMultiData("Officer_Details", array("Officer_Name","Officer_Resigned"), $Officer_Details);

如果官员/公司的记录已经存在,则只会更新其他字段,因为官员/公司是唯一的,所以不会再插入整行。

但我不知道如何填写Company_Officer,因为它需要Company_ID&执行此代码时我没有的Officer_ID有一个解决这个问题的简单方法吗?我应该只是插入官员/公司,然后从数据库中取回所有公司和官员的ID,并与我用来更新数据库的数组进行比较?

0 个答案:

没有答案