Symfony2:ArrayCollection比多个数据库查询更好吗?

时间:2015-06-04 09:28:14

标签: php mysql symfony

在Symfony2中,我有两个实体(CompaniesEmployees),具有一对多关系(一个公司可以有多个员工)。
每个Employee对象都有idcompany_id(外键),badge_numberlast_updated日期时间字段,name

简单,对吧? 现在是棘手的部分......

每天我(从API)获得一个$company_upd数组,其中包含更新部分员工数据的所有公司的列表。然后,对于$company_upd中的每个公司,我从API检索一个$company_employees_list数组,该数组包含新的员工列表。

然后我遍历数组以识别需要在我的本地数据库中持久化的任何新/更新记录。像这样:

foreach ($company_employees_list as $employee){

    $local_employee = $repo->findOneBy("badge_number" => $employee["badge_number"];

    //if there is already an employee record with the same badge_number

    if($local_employee){

        //compare the last_updated field to see if this employee record needs to be updated

        if($employee["badge_number"] > $local_employee->getLastUpdated()){

            //update the record and persist to the database
            $local_employee->setSomething($employee["some_value"];

        }

    } else {

         //create a new employee object and persist it to the database
         $new_employee = new Employee();
         $new_employee->setSomething('some_value');
         $em->persist($new_employee);

    }

}

$em->flush();

当然,这种方法运行正常,但我正在对员工foreach公司进行查询! (检索相应的对象并更新它)

使用ArrayCollection是否可能(并且会更好)?我的意思是:获取员工ArrayCollection ONE TIME,然后使用它。搜索是否已存在具有特定badge_number的员工记录,并最终更新并将其保留到数据库中? 所以,基本上,我想在上面的代码中做我所做的一切,但使用Array_Collection而不是单独的查询。 但只有这种新方法更快/更好。

如果它确实可能(并且更快),你能不能写一些模型代码来更好地理解如何操作ArrayCollection并做我想做的事情?

//Fetch the local db employees ArrayCollection
$employees_ar_coll = $company->getEmployees();

//What now???? =)

P.S。 API就像这样工作,无法改变它。

0 个答案:

没有答案