在doctrine 2 DQL中使用object vs Identifier

时间:2012-09-28 14:49:02

标签: object doctrine-orm dql identifier

所以我的朋友和我正在讨论是否在DQL中使用object或id 我在互联网上搜索,但我在学说文档中找不到任何东西,看看哪种是最佳做法 所以问题是这样的 想象一下,你有Category对象 您希望获得价格低于10的产品,以便在产品存储库中创建DQL并传递$ category对象以获得更好的性能 我的朋友说我们应该通过$ category-> getId()并按照这样的ID搜索

public function findCheapProducts($categoryId){
return $this->createQueryBuilder('p')
            ->where('p.category = :categoryId')
            ->andWhere('p.price < :price')
            ->setParameters(array(
                'categoryId' => $categoryId,
                'price'      => 10
            ));
}

但我说的是这样的

public function findCheapProducts(Category $category){
return $this->createQueryBuilder('p')
            ->where('p.category = :categoryId')
            ->andWhere('p.price < :price')
            ->setParameters(array(
                'categoryId' => $category,
                'price'      => 10
            ));
}

我在这里写了代码,所以错误或事情对我来说并不重要 目标是查看哪个是通过标识符

放置条件的更好方法

1 个答案:

答案 0 :(得分:1)

我根据用户输入混合两者。当我已经拥有了传递它的对象时,如果我在表单提交之后只有ID,那么我会传递ID,因为加载模型只是为了将它传递给查询构建器是无意义的。 (在这种情况下,您需要进行适当的表单验证以避免错误的ID)