Doctrine 2 ORM、Zendframework 2 を使用しています
Role Entity の Entity 属性は次のようになります
/**
*
* @ORM\Column(type="string")
*/
protected $name;
/**
*
* @ORM\OneToMany(targetEntity="\Application\Entity\Role", mappedBy="parent")
*/
protected $children;
/**
*
* @ORM\ManyToOne(targetEntity="\Application\Entity\Role", inversedBy="children")
*
*/
protected $parent;
Mysql テーブルは次のようになります。
私が探している結果は配列です。重要なことの 1 つは、値が表示される前の配列内のすべてのエントリをキーとして追加する必要があることです. したがって、順序は非常に重要です.
つまり、[site-manager] => ゲスト (値) がキーとして配列に存在しないため、[ゲスト] => その前に存在しない場合、ゲストは最初のエントリ (0 インデックス) として来ることができないため、[ゲスト] => はテーブルの 2 番目のレコードとして入力された場合でも最初に来る
Array(
[guest] =>
[site-manager] => guest
[company-manager] => site-manager
[member] => guest
[staff] => member
[internalstaff] => member
[sales] => staff
[manager] => sales,internalstaff
[admin] => manager
)
空の配列を返すコントローラーでこのコードを実行しています
$qb = $objectManager->createQueryBuilder();
$qb->select('r, p')
->from('\Application\Entity\Role', 'r')
->innerJoin('r.parent','p', 'with','p.id = r.id')
//->where('b.id = ?1')
->orderBy('r.id', 'ASC');
$data = $qb->getQuery()->getArrayResult();
どんな助けでも大歓迎です