-1

結合されたフィールド名を見つけたいのですが、取得する方法が見つかりませんでした。こんなシチュエーションがあります。インスタンス ユーザーとロールの 2 つのテーブルがあります。ユーザー エンティティには、コレクションである Roles フィールドがあります。パラメータ関連オブジェクト (ロール) を取得するメソッドが必要で、ユーザーの外部キーである role_id を返す必要があります。方法が見つかりませんでした。

4

1 に答える 1

0

エンティティが次のように宣言されていると仮定します。

/**
 * @ORM\Entity
 */
class User
{  
    /**
     * @ORM\ManyToMany(targetEntity="Role")
     */
    private $roles;

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

    // Other fields and methods
    // ...
}

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

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

    // Other fields and methods
    // ...
}

を呼び出しCollection#map()て ID を取得できます。

$user = $this->getUser();
$roleIDs = $user->getRoles()->map(function (Role $role) {
    return $role->getId();
});

別のオプションは、Doctrine 接続を使用して生の結果を取得することです。

于 2013-06-21T10:23:27.260 に答える