エンティティ「Preferences」と多数の関係を持つエンティティ「Clients」があるため、もちろん中間テーブル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();
ご覧のように、私は彼の電子メールで 1 人のクライアントを選択し、1 つの行を返します。これは、電子メールが一意であり、クライアントとは異なる名前、姓などを取得できるためです。次のように実行します。
$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;
誰かがアイデアを持っているなら、それは素晴らしいことです、事前に感謝します.