Symfony3我必须从相关实体

时间:2017-07-05 10:29:21

标签: php symfony doctrine-orm

我有一个问题。

我有2个实体

/**
 * @ORM\Entity
 * @ORM\Table(name="call_center")
 */
class Call {

    /**
     * @ORM\GeneratedValue(strategy="AUTO")
     * @ORM\Id
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\OneToMany(targetEntity="Number", mappedBy="number")
     * @ORM\Column(type="string")
     */
    private $number;

    /**
     * @ORM\Column(type="string")
     */
      private $value;
......
    getters setters

/**
 * @ORM\Entity
 * @ORM\Table(name="number")
 */
class Number {

    /**
     * @ORM\GeneratedValue(strategy="AUTO")
     * @ORM\Id
     * @ORM\Column(type="integer")
     * 
     */
    private $id;

    /**
     * @ORM\ManyToOne(targetEntity="Call", inversedBy="number")
     * @ORM\JoinColumn(nullable=false)
     */
    private $number;

    /**
     * @ORM\Column(type="string")
     */
    private $link;

我想在控制器中显示我的数据。 这是我的控制器

class DefaultController extends Controller
{
    /**
     * @Route("/pl/", name="homepage")
     */
    public function indexAction(Request $request)
    {
        $em = $this->getDoctrine()->getRepository('AppBundle:Call')->findAll();

        foreach ($em as $name) {
        switch(1) {
            case $name->getNumber():
                echo $name->getValue();
                echo $name->getLink(); <----PROBLEME
                break;
            default:
                break;
        }
        }

        return $this->render('default/index.html.twig', array(
            'em' => $name
        ));
    }
}

显示实体调用的数据,但我不知道如何从Number(getLink())中显示数据。问题是我有一个循环,我必须显示特定的值关系。可能我必须为实体创建存储库?

Entity Call
/**
 * Get id
 *
 * @return integer
 */
public function getId()
{
    return $this->id;
}

/**
 * Set number
 *
 * @param string $number
 *
 * @return Call
 */
public function setNumber($number)
{
    $this->number = $number;

    return $this;
}

/**
 * Get number
 *
 * @return string
 */
public function getNumber()
{
    return $this->number;
}

/**
 * Set value
 *
 * @param string $value
 *
 * @return Call
 */
public function setValue($value)
{
    $this->value = $value;

    return $this;
}

/**
 * Get value
 *
 * @return string
 */
public function getValue()
{
    return $this->value;
}

entity Number

/**
     * Set number
     *
     * @param \AppBundle\Entity\Call $number
     *
     * @return Number
     */
    public function setNumber(\AppBundle\Entity\Call $number)
    {
        $this->number = $number;

        return $this;
    }

    /**
     * Get number
     *
     * @return \AppBundle\Entity\Call
     */
    public function getNumber()
    {
        return $this->number;
    }

    /**
     * Get id
     *
     * @return integer
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set link
     *
     * @param string $link
     *
     * @return Number
     */
    public function setLink($link)
    {
        $this->link = $link;

        return $this;
    }

    /**
     * Get link
     *
     * @return string
     */
    public function getLink()
    {
        return $this->link;
    }

2 个答案:

答案 0 :(得分:1)

您是否尝试通过$name->getNumber()->getLink()访问它?

如下所示,通过tny,您应该修复注释,否则上述操作将无效,因为getNumber()当前正在返回字符串而不是Number实例

答案 1 :(得分:1)

也许你有一个字符串,因为你告诉学说放一个字符串?

从您的关系中删除以下注释:

@ORM\Column(type="string")