Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.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 条令2:如何用子项数更新字段?_Php_Sql_Symfony_Doctrine Orm_Dql - Fatal编程技术网

Php 条令2:如何用子项数更新字段?

Php 条令2:如何用子项数更新字段?,php,sql,symfony,doctrine-orm,dql,Php,Sql,Symfony,Doctrine Orm,Dql,如果我有两个实体:Parent和Child,我如何运行单个查询并用相关子项的数量更新Parent.number\u\u children 我可以迭代每一个父级,但在MySQL中只需一个查询就可以轻松完成。例如,问题是在原则2中(可能是DQL)?我将使用PrePersist和PreUpdate事件: class Parent { /** * @ORM\PrePersist() * @ORM\PreUpdate() */ public function

如果我有两个实体:
Parent
Child
,我如何运行单个查询并用相关子项的数量更新
Parent.number\u\u children


我可以迭代每一个父级,但在MySQL中只需一个查询就可以轻松完成。例如,问题是在原则2中(可能是DQL)?

我将使用
PrePersist
PreUpdate
事件:

class Parent
{
    /**
     * @ORM\PrePersist()
     * @ORM\PreUpdate()
     */
    public function onPrePersistAndUpdate()
    {
        $this->numberOfChildren = count($this->getChildren());
    }

}

在有人提供更好的解决方案之前,我将使用本机SQL:

$entityManager -> getConnection() -> query("...");

使用
@ORM\PrePersist()
怎么样?是的,但是如果我有10000个家长,每个家长都有10000个孩子呢?使用本机MySQL查询,我可以做到这一点,而无需从数据库中提取任何数据。。。