从数组更新实体
Update entities from an array
在 Symfony 3.3 上,学说 2.5 和 PHP 5.5.9
我的前台正在向我的 API 发送一个看起来像
的数组
[{id: 1, value: 2}, {id: 2, value: 2423}, {id: 56, value: 323.3}]
我需要用所有这些值更新我的实体。
我遇到过this
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();
在 Symfony 3.3 上,学说 2.5 和 PHP 5.5.9
我的前台正在向我的 API 发送一个看起来像
的数组[{id: 1, value: 2}, {id: 2, value: 2423}, {id: 56, value: 323.3}]
我需要用所有这些值更新我的实体。
我遇到过this
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();