我有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,并与我用来更新数据库的数组进行比较?