У меня есть функция, которая выполняет 2 действия.
- Сохраняет существующий или новый элемент / запись
- Запрос и изменение порядка элементов
Алгоритм кода выглядит следующим образом:
public function doSomething($id = 0)
{
$em = $this->getEntityManagerFromSomewhere();
$service = $this->getSomeServiceFromSomewhere();
$repo = $em->getRepository(Item::class);
$conn = $em->getConnection();
$conn->beginTransaction();
if ($id) {
$item = new Item();
} else {
$item = $repo->find($id);
}
$em->persist($item);
$em->flush();
$items = $repo->getAllItems();
// changes are saved to the database
$service->rearrangeItems($items);
$conn->commit();
}
Теперь у меня проблема в том, что если это новый элемент, когда мы пытаемся получить все элементы, этот новый элемент не включается длякакая-то странная причина.
Я пробовал что-то самостоятельно, и единственное, что мне подходит, это вставить
$em->clear(); // after flush
Я не уверен, что это лучший способ подойти к этомуили если я неправильно использую эту функцию.Это работает, хотя, когда я проверял это.