23

Doctrine でレコードを削除しようとしていますが、削除されない理由がわかりません。

ここに私のコードがあります:

function del_user($id)
{
    $single_user = $entityManager->find('Users', $id);

    $entityManager->remove($single_user);

    $entityManager->flush();
}

プラス: クエリをエコーし​​て、ここで何が起こっているかを確認するにはどうすればよいですか?

4

7 に答える 7

42

これは古い質問であり、まだ答えがないようです。参考までに、ここに残しておきます。また、教義のドキュメントを確認することもできます

レコードを削除するには、次のことを行う必要があります (コントローラーにいると仮定します)。

// get EntityManager
$em = $this->getDoctrine()->getManager();

// Get a reference to the entity ( will not generate a query )
$user = $em->getReference('ProjectBundle:User', $id);

// OR you can get the entity itself ( will generate a query )
// $user = $em->getRepository('ProjectBundle:User')->find($id);

// Remove it and flush
$em->remove($user);
$em->flush();

最初にエンティティが存在するかどうかを確認せずにエンティティを削除する場合は、参照を取得する最初の方法を使用することをお勧めします。これは、DB にクエリを実行せず、エンティティの削除に使用できるプロキシ オブジェクトのみを作成するためです。 .

最初にこの ID が有効なエンティティに対応していることを確認したい場合は、エンティティを削除する前に DB にクエリを実行するため、2 番目の方法が適しています。

于 2014-07-25T16:07:01.933 に答える
1

do you check your entity as the good comment annotation ?

cascade={"persist", "remove"}, orphanRemoval=true
于 2013-10-24T13:45:29.127 に答える
-2

を試してみてvar_dump()ください$single_user。「null」なら存在しない?

また、「Users」が有効なエンティティ名 (名前空間なし) であるかどうかを確認し、$id がユーザーの PK を参照しているかどうかを確認します。

実行されたクエリを確認したい場合は、mysql/sql/... ログを確認するか、Doctrine を調べてください。\DBAL\Logging\EchoSQLLogger

于 2013-10-23T12:03:02.463 に答える