私はエンティティ上で、&のフラッシュを持続すると、DBに重複レコードが存在します。Doctrineは、Symfonyで重複したレコードを残します。
私はPHP 7.0.7、MySQLの5.6.28とsymfony 2.8.7を使用します。
UPDATE:コントローラの最後にリダイレクトを削除すると、Doctrineはレコードを1回だけ保持します。リダイレクトはDoctrineと関連がありますか?コントローラで
コード:
$request = new PersonalDevelopmentRequest();
$request
->setTrainingGroup($training->getTrainingGroup())
->setTraining($training)
->setEmployee($this->getUser())
->setName($training->getName());
$em = $this->getDoctrine()->getManager();
$em->persist($request);
$em->flush();
$this->addFlash('success', 'Mám to.');
return $this->redirectToRoute('personal_development');
エンティティ:
/**
* PersonalDevelopmentRequest.
*
* @ORM\Table(name="personal_development_request")
* @ORM\Entity(repositoryClass="AppBundle\Repository\PersonalDevelopmentRequestRepository")
* @Gedmo\SoftDeleteable()
*/
class PersonalDevelopmentRequest implements WorkflowInterface
{
use BlameableEntity;
use SoftDeleteableEntity;
use TimestampableEntity;
/**
* @ORM\Column(name="id", type="guid")
* @ORM\Id
* @ORM\GeneratedValue(strategy="UUID")
*/
private $id;
/**
* @ORM\Column(type="date", nullable=true)
*/
private $period;
/**
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\User", inversedBy="personalDevelopmentRequests")
*/
private $employee;
/**
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\User")
* @ORM\JoinColumn(nullable=true)
*/
private $employeeForRelation;
/**
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\TrainingGroup", inversedBy="requests")
* @ORM\JoinColumn(nullable=false)
*/
private $trainingGroup;
/**
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Training", inversedBy="requests")
* @ORM\JoinColumn(nullable=true)
*/
private $training;
/**
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\AnnualReview", inversedBy="requests")
*/
private $annualReview;
/**
* @ORM\Column(type="string", nullable=true)
*/
private $name;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $description;
const TYPE_ANNUAL_REVIEW = 'annual_review';
const TYPE_MANUAL = 'manual';
const TYPE_TRAINING_PLAN = 'training_plan';
/**
* @ORM\Column(type="string", length=16)
*/
private $type;
const STATE_SENT = 'sent';
const STATE_DECLINED = 'declined';
const STATE_APPROVED = 'approved';
const STATE_FINISHED = 'finished';
const STATE_UNFINISHED = 'unfinished';
/**
* @ORM\Column(type="string", length=16)
*/
private $state;
const RESULT_DIDNT_COMPLETE = 0;
const RESULT_COMPLETED_PASSED = 1;
const RESULT_COMPLETED_FAILED = 2;
/**
* @ORM\Column(type="integer", nullable=true)
*/
private $result;
/**
* @ORM\Column(type="float", nullable=true)
*/
private $cost;
/**
* @ORM\Column(type="date", nullable=true)
*/
private $mustBeRenewedAfter;
const TRAINING_TYPE_NONE = null;
const TRAINING_TYPE_INT = 'int';
const TRAINING_TYPE_EXT = 'ext';
/**
* @ORM\Column(type="string", nullable=true)
*/
private $trainingType;
/**
* @ORM\Column(type="integer", nullable=true)
*/
private $rangeInHours;
/**
* @ORM\ManyToMany(targetEntity="AppBundle\Entity\Log")
* @ORM\JoinTable(name="personal_development_request_logs",
* joinColumns={@ORM\JoinColumn(name="personal_development_request_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="log_id", referencedColumnName="id", unique=true)}
*)
*/
private $logs;
...
誰も私が間違っているのを教えすることはできますか?
コントローラの名前とルートを教えてください。 – Kapil