以某种方式可以使用Doctrine获取数组数组吗?
在本例中,我希望国家/地区应该是一个数组。
$user['country']['name']
or
$user['country']['cid']
我当前的要求:
$query = $this->createQueryBuilder('u')
->select('u')
->getQuery();
return $query->getResult(\Doctrine\ORM\Query::HYDRATE_ARRAY);
我只在这里得到了Id。
使用yml:
的Doctrine实体用户:
TestBundle\Entity\User:
type: entity
table: user
repositoryClass: TestBundle\Entity\UserRepository
id:
uid:
type: integer
nullable: false
unsigned: true
id: true
generator:
strategy: IDENTITY
fields:
firstname:
type: string
nullable: true
length: 255
fixed: false
lastname:
type: string
nullable: true
length: 255
fixed: false
email:
type: string
nullable: true
length: 255
fixed: false
oneToOne:
country:
targetEntity: Country
joinColumn:
name: country
referencedColumnName: cid
lifecycleCallbacks: { }
国家:
TestBundle\Entity\Country:
type: entity
table: country
repositoryClass: TestBundle\Entity\CountryRepository
id:
cid:
type: integer
nullable: false
unsigned: false
id: true
generator:
strategy: IDENTITY
fields:
cid:
type: integer
nullable: true
unsigned: false
options:
default: 0
name:
type: string
nullable: true
length: 255
fixed: false
lifecycleCallbacks: { }
这取决于我的例子中的速度,因为我有大约10 000个对象。
另一种解决方案是,编写一个SQL语句,有很多“连接” 因为上面这个例子只是一个缩短的例子,我有大约7个这样的列,比如“group”等。
答案 0 :(得分:1)
您可以简单地使用对象,而不是为数组加水。然后,您可以通过应在模型类中定义的getter访问Country
属性。如果你真的需要一个数组,你可以使用php填充它们。
但是如果你真的需要速度,你应该考虑使用原始的select语句,无论复杂程度如何,都可以比Doctrine更好地进行优化。