我需要按两列对数据进行sorting(当列号1的行有不同的值时,按顺序排列;否则按列2sorting) 我正在使用QueryBuilder来创build查询。 如果我再次调用orderBy方法,它会replace以前指定的任何顺序。 我可以传递两列作为第一个参数: ->orderBy('r.firstColumn, r.secondColumn', 'DESC'); 但是我不能为第二个parameter passing两个sorting方向,所以当我执行这个查询时,第一列按升序排列,第二列按降序排列。 我想用他们两个降序。 有没有办法使用QueryBuilder做到这QueryBuilder ? 我需要使用DQL吗?
我的实体使用这个注解为它的ID: /** * @orm:Id * @orm:Column(type="integer") * @orm:GeneratedValue(strategy="AUTO") */ protected $id; 从一个干净的数据库,我从旧的数据库现有的logging导入,并试图保持相同的ID。 然后,当添加新logging时,我希望MySQL像往常一样自动增加ID列。 不幸的是,似乎Doctrine2完全忽略了指定的ID。 新解决scheme 根据以下build议,以下是首选解决scheme: $this->em->persist($entity); $metadata = $this->em->getClassMetaData(get_class($entity)); $metadata->setIdGeneratorType(\Doctrine\ORM\Mapping\ClassMetadata::GENERATOR_TYPE_NONE); $metadata->setIdGenerator(new \Doctrine\ORM\Id\AssignedGenerator()); 旧解决scheme 由于Doctrineclosures了ClassMetaData以确定生成器策略,因此必须在pipe理EntityManager中的实体后对其进行修改: $this->em->persist($entity); $metadata = $this->em->getClassMetaData(get_class($entity)); $metadata->setIdGeneratorType(\Doctrine\ORM\Mapping\ClassMetadata::GENERATOR_TYPE_NONE); $this->em->flush(); 我只是在MySQL上进行了testing,并且按照预期工作,这意味着具有自定义ID的实体与该ID一起存储,而没有指定ID的lastGeneratedId() + 1使用lastGeneratedId() + 1 。
我已经阅读了关于学说的文献中的保湿,但我仍然不明白是什么。 有人可以解释吗?
我想使用Doctrine 2执行原始SQL 我需要截断数据库表,并用默认的testing数据初始化表。