3

所以我和我的朋友正在讨论是否在 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
            ));
}

我在这里写了代码,所以错误或事情对我来说并不重要目标是看看哪个是通过标识符放置条件的更好方法

4

1 回答 1

2

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

于 2012-10-02T18:32:32.203 回答