私はSymfonyを初めて使用しています。私はブログサイトを作りたい。だから私は2つのエンティティを投稿し、ユーザーを作成しました。Symfony doctrine:ManyToOne関係が動作しない
http://symfony.com/doc/current/doctrine/associations.html
AppBundle /エンティティ/ Post.php:
...
/**
* Post
*
* @ORM\Table(name="post")
* @ORM\Entity(repositoryClass="AppBundle\Repository\PostRepository")
*/
class Post
{ /**
* @ORM\ManyToOne(targetEntity="User", inversedBy="post")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/
private $user;
....
}
AppBundle /エンティティ/ User.php:
...
/**
* User
*
* @ORM\Table(name="user")
* @ORM\Entity(repositoryClass="AppBundle\Repository\UserRepository")
*/
class User extends BaseUser
{
/**
* @ORM\OneToMany(targetEntity="Post", mappedBy="user")
*/
private $post;
...
}
を私はここの上に説明したように、私もきちんとエンティティの両方に関連していると思います
ユーザーID(投稿を作成したユーザー)で投稿を保存できました。しかし、私はこれの逆を達成することはできません。すなわち、ユーザによって作成されたすべての投稿を得る。私はこれを達成しようとしています:
$em = $this->getDoctrine()->getManager();
$user = $em->getRepository('AppBundle:User')->find($this->getUser()->getId());
dump($user->getPost());exit;
しかし、私は変数に投稿を取得していません。 (参考:データベースにユーザIDを持つ投稿があります)。ここで私は上記のために取得していますものです:
PostController.php on line 163:
PersistentCollection {#103 ▼
-snapshot: []
-owner: User {#76 ▶}
-association: array:15 [ …15]
-em: EntityManager {#374 …11}
-backRefFieldName: "user"
-typeClass: ClassMetadata {#80 …}
-isDirty: false
#collection: ArrayCollection {#102 ▼
-elements: []
}
#initialized: false
}
注:私は、ユーザー管理のためのFosUserBundleを使用してい。ここで問題が発生しているかどうかは不明です。
ご協力いただければ幸いです。
おかげで、
Parthボラ
いいえ、私は持っていない。もし、再生実体? –
@MaxPを持っている。 とにかく、問題が修正されました –