在原则 2 DQL 中使用对象与标识符



所以我和我的朋友正在讨论是否在DQL中使用object或id我在互联网上搜索,但我在教义文档中找不到任何内容,看看哪个是最佳实践所以问题是这样的假设您有类别对象您希望获取价格低于 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
            ));
}

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

方法

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

相关内容

  • 没有找到相关文章

最新更新