【问题标题】:Symfony2, get elements from manytomany relation in controllerSymfony2,从控制器中的多对多关系中获取元素
【发布时间】:2015-06-30 10:03:28
【问题描述】:

我有一个实体“Clients”,它与实体“Preferences”之间存在多对多关系,所以当然还有一个中间表clients_preferences。

关系工作正常,对于客户,我可以在 TWIG 中显示其所有偏好,例如

{% if not client.preferences.empty %}
   <p>
     {% for preference in client.preferences %}
          {{ preference.name }}{% if not loop.last %}, {% endif %}
     {% endfor %}
   </p>
 {% endif %}

但是:

我希望能够在我的控制器中获取首选项列表 像

$preferences = $preference1." - ".$preference2......;

(这是因为我需要通过 JSON 发送此列表...)

所以,我创建了一个查询来获取我的客户行:

$query = $em->createQuery('SELECT c FROM SamplemyBundle:Clients c WHERE c.email = ?1')
->setParameter(1, $email);

$result = $query->getSingleResult();

如您所见,我通过他的电子邮件选择了一个客户,我得到了一行作为回报,因为电子邮件是独一无二的,我可以从客户那里获得不同的东西,比如他的名字、姓氏等......通过这样做:

$firstname = $result->getFirstname();

一切都很好,只是问题是我不知道如何处理控制器中的首选项列表。 我想我必须做一个循环......

在我的实体客户下方

class Clients
{
  /**
   * @ORM\ManyToMany(targetEntity="Sample\myBundle\Entity\Preferences", cascade={"persist"})
   */
   private $preferences;

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

  /**
   * @var string
   *
   * @ORM\Column(name="firstname", type="string", length=255)
   */
   private $firstname;

还有我的实体首选项

class Preferences
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="name", type="string", length=255)
     */
    private $name;

如果有人有想法,那就太好了,在此先感谢您。

【问题讨论】:

    标签: symfony controller many-to-many createquery


    【解决方案1】:

    首选项将设置为包含首选项实例的 Doctrine\Common\Collections\ArrayCollection。所以你可以像数组一样循环它们。

    $preferences = array();
    foreach ($result->getPreferences() as $preference) {
        $preferences[] = $preference->getName();
    }
    $preferenceString = implode(' - ',$preferences);
    

    编辑:错字

    【讨论】:

    • 感谢很多 dk80。一个简单的逻辑代码:)。非常感谢。
    猜你喜欢
    • 2014-03-26
    • 2014-05-09
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多