Php 从对象获取子对象并创建尚不存在的新对象
我试图从Sonata Admin中属于父对象的所有子对象中获取三个属性 我有我父母的目标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]=
$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();
}