0
私のZF2プロジェクトにbulk item delete
を許可します。doctrine zend framework 2のバルクアイテムを削除する
私はdoctrineを使用しています。
バルクアイテムを削除アクションに渡す方法がわかりません。
すべてのアイテムIDをコントローラに渡して削除するにはどうすればよいですか?
私のZF2プロジェクトにbulk item delete
を許可します。doctrine zend framework 2のバルクアイテムを削除する
私はdoctrineを使用しています。
バルクアイテムを削除アクションに渡す方法がわかりません。
すべてのアイテムIDをコントローラに渡して削除するにはどうすればよいですか?
あなたは大部分が、いくつかの異なる方法で削除を実装することができます
1)DQL
を使用して<?php
$ids = [1, 2, 3, 4];
$query = $em->createQuery('DELETE FROM App\\Entity\\User u WHERE u.id IN (:ids)');
$query->setParameter('ids', $ids);
$query->execute();
2)反復処理が
<?php
$ids = [1, 2, 3, 4];
$users = $em->getRepository('App\\Entity\\User')->findById($ids);
foreach($users as $user) {
$em->remove($user);
}
$em->persist();
3)バッチ処理結果
IDS [] = 1つの& IDは[] = 2つの& IDS [] = 3 はそう、あなたはコントローラ内のIDを取得することができます:<?php
$batchSize = 20;
$i = 0;
$q = $em->createQuery('SELECT u FROM App\\Entity\\User u');
$iterableResult = $q->iterate();
while (($row = $iterableResult->next()) !== false) {
$em->remove($row[0]);
if (($i % $batchSize) === 0) {
$em->flush(); // Executes all deletions.
$em->clear(); // Detaches all objects from Doctrine!
}
++$i;
}
$em->flush();
更新
たちは、次のURIを持っていると仮定しましょう:
<?php
class UserController extends AbstractActionController
{
public function deleteAction()
{
$query = $this->getRequest()->getQuery();
$users = $em->getRepository('App\\Entity\\User')->findById($query['ids']);
foreach($users as $user) {
$em->remove($user);
}
$em->persist();
}
}
私は現時点でアプローチ2を使用しています。しかし、これらの$ idをビューファイルからどのように渡すのですか?それが私が直面している問題です。 –
更新された例をご覧ください –