我正在使用Symfony 2.7我已經用一個實體構建了一個表單,它在提交時返回一個對象數組。我需要能夠比較這個對象數組與我在那個表中有什麼?Symfony 2/PHP比較數組中對象的區別?
所以這是我的形式爲設置
$builder
.......
->add('my_options', 'entity', [
'label' => 'Options:',
'class' => 'xxxxBundle:Details',
'choice_label' => 'Title',
'multiple' => true,
'expanded' => true,
'required' => false,
'mapped' => false,
'data' => $data,
'attr' => ['class' => 'AdminList'],
'query_builder' => function(EntityRepository $er) {
return $er->createQueryBuilder('de')
->where('de.active = ?1')
->setParameter(1, 1); }
]);
然後我做什麼我的選擇表中已經有了一個基本的查詢,
$EditPanels = $this->getDoctrine()
->getRepository('xxxBundle:Options')
->findBy(['AccountID' => $AcID]);
這給了我兩個數組的一個用戶剛剛選擇了哪些選項(他們現在需要在此帳戶上選擇的選項)以及數據庫表中已有的選項。
如何比較這些表更新與新的選項行,通過刪除什麼不需要,並在新選項加入?
謝謝。
嗨,不知道這將如何工作,我喜歡這個主意,但$對象仍然需要綁定到一個實體?這是否構成另一個表單實體?我相信這是一個更好的方法,但不知道如何運行它。 –
哦,對不起,現在我看到有兩個不同的選項和細節實體:)那麼簡單地清除表格並插入所有新數據作爲新記錄呢?它不應該對性能產生很大影響,但會簡化應用程序的邏輯。 –
現在這是一個想法...我專注於更新表。但刪除所有X = X,然後添加新的。我放棄了。我會這樣做,我做了一個工作解決方案(我不會發布的東西)它是非常糟糕的:( –