Каков наилучший способ хранения многомерного массива с использованием доктрины 2? - PullRequest
1 голос
/ 29 марта 2012

Я хотел бы иметь массив массивов в классе, используя Zend и Doctrine2.

Итак, у меня есть класс с именем Grid, который должен иметь атрибут, содержащий массив массивов GridItem. Эти GridItem также содержат ссылку на экземпляр Product.

Вот Grid.php:

/**
* @Entity
* @Table(name="Grid")
*/
class GPos_Model_Grid extends GPos_Doctrine_ActiveEntity {
    /**
    * @Id @Column(type="integer")
    * @GeneratedValue
    */
    private $id;

    /** @Column(type="integer") */
    private $number;

    //THIS IS THE ATTRIBUTE
    private $grid;
}

А вот и GridItem.php:

/**
* @Entity
* @Table(name="GridItem")
*/
class GPos_Model_GridItem extends GPos_Doctrine_ActiveEntity {
    /**
     * @Id @Column(type="integer")
     * @GeneratedValue
     */
    private $id;

    /** @Column(length=7) */
    private $color;

    /** @Column(type="boolean") */
    private $grid;

    /**
     * @ManyToOne(targetEntity="Product")
     * @JoinColumn(name="product_id", referencedColumnName="id")
     */
    private $product;
}

Итак, как я уже сказал, я бы хотел, чтобы атрибут $grid был сохранен как ArrayCollection ArrayCollections GridItem.
Однако я не могу понять, какую аннотацию мне следует использовать, чтобы это произошло. Единственный способ, который я нашел сейчас, - это создать средний класс между Grid и GridItem, который был бы чем-то вроде GridRow. Таким образом, у меня могли быть ассоциации Много-к-одному между всеми ними. Но это создает новое «соединение» между таблицами, и я получу небольшой, но все же значительный удар по производительности, который я не могу себе позволить.

У вас, ребята, есть какой-нибудь совет, как это сделать без этого GridRow класса? Таким образом, используя только Grid и GridItem?

Спасибо за помощь!

1 Ответ

0 голосов
/ 19 апреля 2012

Я наконец выбрал опцию GridRow, так как не нашел способа хранения массивов массивов ..

...