关于Symfony 3.3、条令2.5和PHP 5.5.9
我的前端正在向我的API发送一个看起来像的数组
[{id:1,value:2},{id:2,value:2423},{id:56,value:323.3}]
我需要用所有这些值更新我的实体。
我偶然发现了这个
foreach ($repo->findById($ids) as $obj) {
$obj->setOrder(array_search($obj->getId(), $ids));
}
$em->flush();
但是,我无法独自工作来更新数组中的值。
使用输入的数组更新实体的每个值的最佳方式是什么?
$data = json_decode('[{id: 1, value: 2}, {id: 2, value: 2423}, {id: 56, value: 323.3}]', true);
// After decoding your data - build idValue map -
// array where key is `id` field and value is `value` field
$idValueMap = array_column($data, 'value', 'id');
// using `array_keys` you can find all items with required ids
foreach ($repo->findById(array_keys($idValueMap)) as $obj) {
// and `$idValueMap[$obj->getId()]` will give you the required value for update
$obj->setOrder($idValueMap[$obj->getId()]);
}
$em->flush();