Как я могу сохранить свои данные в базе данных с менеджером сущностей?

Это вывод моей переменной $data:

array(7) { [0]=> array(2) { ["name"]=> string(14) "form[username]" ["value"]=> string(1) "1" } [1]=> array(2) { ["name"]=> string(11) "form[email]" ["value"]=> string(7) "1@12.sw" } [2]=> array(2) { ["name"]=> string(15) "form[is_active]" ["value"]=> string(1) "1" } [3]=> array(2) { ["name"]=> string(26) "form[plainPassword][first]" ["value"]=> string(0) "" } [4]=> array(2) { ["name"]=> string(27) "form[plainPassword][second]" ["value"]=> string(0) "" } [5]=> array(2) { ["name"]=> string(8) "form[id]" ["value"]=> string(1) "9" } [6]=> array(2) { ["name"]=> string(12) "form[_token]" ["value"]=> string(43) "MdSCKxGkdFs2HPUSoM2vGidSRUmPgzZC3pZaW2wK2Rk" } }

Я хочу обновить мои данные в моей базе данных с помощью менеджера сущностей:

      $entityManager->persist($data);
$entityManager = $data->getDoctrine()->getManager();
$entityManager->flush();
$response = new Response();
$response->send();

Но я получаю сообщение об ошибке:

EntityManager # persist () ожидает, что параметр 1 будет объектом сущности,
NULL дано.

-1

Решение

Вы можете создать новую сущность, если ваши данные не содержат ее. Получите правильные данные из значений формы и поместите их в заданные методы. Небольшой пример ниже.

// Create new Entity
$entity = new EntityNameHere
$em = $this->getDoctrine()->getManager();

// Use setter function from that Entity
$entity->setName($data['name']);
$entity->setPassword($data['password']);

$em->persist($entity);
$em->flush();
2

Другие решения

    if(is_object($data)) {
$metadata = $em->getMetadataFactory()->getAllMetadata();
$entities = [];
foreach ($metadata as $entity){
preg_match('/\w+$/',$entity->getName(), $o);
$entities[] = $o[0];
}
if(in_array($data,$entities)){
$em->persist($data);
$em->flush();
}
} else {
$query = null; //todo: $query
$rsm = new ResultSetMapping(); //todo: fill $srm
$em->createNativeQuery($query, $rsm)->execute();
}
1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector