2016-01-15 8 views
2

У меня есть объект в моем проекте Symfony2 под названием Department, у которого есть отношения OneToMany с сущностью User. Я пытаюсь встроить коллекцию массивов пользователей через пакет Bazinga Hateoas.Bazinga Hateoas: Embed Array Collection

Если я внедряю одного пользователя, все работает нормально. В этом примере я встраиваю один экземпляр объекта.

@Hateoas\Relation(
    "user", 
    href = "expr('/api/staff/' ~ object.getUser().getId())", 
    embedded = "expr(object.getUser())", 
    exclusion = @Hateoas\Exclusion(excludeIf = "expr(object.getUser() === null)") 
) //works 

Но если я попробую это с коллекцией массивов, это не сработает.

+0

Все новости об этом? Вы поняли это? – DonCallisto

ответ

0

Это решение может работать для вас

<?php 

namespace AppBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 
use JMS\Serializer\Annotation as JMS; 
use Hateoas\Configuration\Annotation as Hateoas; 
use Symfony\Component\Validator\Constraints as Assert; 

/** 
* @JMS\ExclusionPolicy("all") 
* @Hateoas\Relation(
*  "self", 
*  href = @Hateoas\Route(
*   "get_department", 
*   parameters = { "id" = "expr(object.getId())" } 
* ) 
*) 
* @Hateoas\Relation(
*  "users", 
*  href = @Hateoas\Route(
*   "get_user", 
*   parameters = { "id" = "expr(object.getId())" } 
* ), 
*  embedded = @Hateoas\Embedded(
*   "expr(object.getUsers())", 
*   exclusion = @Hateoas\Exclusion(
*    excludeIf = "expr(object.getUsers().isEmpty() === true)", 
*    groups={"users"}, 
*    maxDepth = 1 
*   ) 
* ), 
*  exclusion = @Hateoas\Exclusion(
*   excludeIf = "expr(object.getUsers().isEmpty() === true)", 
*   groups={"users"}, 
*   maxDepth = 1 
*  ) 
*) 
*/ 
class Department 
{ 

    /** 
    * @var ArrayCollection 
    * 
    * @ORM\OneToMany(targetEntity="AppBundle\Entity\User", mappedBy="department") 
    * @JMS\MaxDepth(1) 
    */ 
    protected $users; 


    /** 
    * Add user 
    * 
    * @param \AppBundle\Entity\User $user 
    * 
    * @return Department 
    */ 
    public function addUser(\AppBundle\Entity\User $user) 
    { 
     $this->users[] = $user; 

     return $this; 
    } 

    /** 
    * Remove user 
    * 
    * @param \AppBundle\Entity\User $user 
    */ 
    public function removeUser(\AppBundle\Entity\User $user) 
    { 
     $this->users->removeElement($user); 
    } 

    /** 
    * Get users 
    * 
    * @return \Doctrine\Common\Collections\Collection 
    */ 
    public function getUsers() 
    { 
     return $this->users; 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^