Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从对象获取子对象并创建尚不存在的新对象_Php - Fatal编程技术网

Php 从对象获取子对象并创建尚不存在的新对象

Php 从对象获取子对象并创建尚不存在的新对象,php,Php,我试图从Sonata Admin中属于父对象的所有子对象中获取三个属性 我有我父母的目标 $parent=$this->admin->getSubject() 然后我想像这样从父对象获取所有子对象 $children=$parent->getChildObjects 然后如何从所有子对象一起创建一个包含三个属性(所有三个属性都是整数)的数组 比如, array(3) { [0]=> '1-1-1' [1]=> '1-1-2' [2]=> '1-1-3' [3]=

我试图从Sonata Admin中属于父对象的所有子对象中获取三个属性

我有我父母的目标

$parent=$this->admin->getSubject()

然后我想像这样从父对象获取所有子对象

$children=$parent->getChildObjects

然后如何从所有子对象一起创建一个包含三个属性(所有三个属性都是整数)的数组

比如,

array(3) {
  [0]=> '1-1-1'
  [1]=> '1-1-2'
  [2]=> '1-1-3'
  [3]=> '1-2-1'
  [4]=> '1-2-2'
  [5]=> '1-2-3'
  [6]=> '1-3-1'
  [7]=> '1-3-2'
  [8]=> '1-3-3'
  [9]=> '2-1-1'
  [10]=> '2-1-2'
  [11]=> '2-1-3'
  [12]=> '2-2-1'
  [13]=> '2-2-2'
  [14]=> '2-2-3'
  [15]=> '2-3-1'
  [16]=> '2-3-2'
  [17]=> '2-3-3'
  [18]=> '3-1-1'
  [19]=> '3-1-2'
  [20]=> '3-1-3'
  [21]=> '3-2-1'
  [22]=> '3-2-2'
  [23]=> '3-2-3'
  [24]=> '3-3-1'
  [25]=> '3-3-2'
  [26]=> '3-3-3'
}
因为我想做的是,我想创建更多的子对象,但如果该子对象还不存在于这三个属性的组合中,它必须签入该数组。如果确实存在,则应跳过该数字,然后尝试循环中的下一个数字

我怎样才能做到这一点?我对编程相当陌生,我只懂一点symfony和sonata的知识


例如,如果有人对其他类型的数组(多维数组)有其他想法,我支持不同的想法。

这里有一种方法可以构建具有三个属性的数组:

$children = [];

foreach( $parent->getChildren() as $child ){
    $children[] = [
         'property1' => $child->getProp1(), 
         'property2' => $child->getProp2(),
         'property3' => $child->getProp3()
    ];
}
然后,您可以使用如下存储库方法进行查询:

    public function findByNot( array $criteria, array $orderBy = null, $limit = null, $offset = null )
    {
        $qb = $this->getEntityManager()->createQueryBuilder();
        $expr = $this->getEntityManager()->getExpressionBuilder();

        $qb->select( 'entity' )
            ->from( $this->getEntityName(), 'entity' );

        foreach ( $criteria as $field => $value ) {

            $qb->andWhere( $expr->neq( 'entity.' . $field, $value ) );
        }

        if ( $orderBy ) {

            foreach ( $orderBy as $field => $order ) {

                $qb->addOrderBy( 'entity.' . $field, $order );
            }
        }

        if ( $limit )
            $qb->setMaxResults( $limit );

        if ( $offset )
            $qb->setFirstResult( $offset );

        return $qb->getQuery()
            ->getResult();
    }