3

だから私の友人と私はインターネットで検索したDQLでオブジェクトと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
            ));
}

ここにコードを書いたので、エラーや事柄はここではあまり重要ではありません。目的は、識別子で条件を設定するためのより良い方法を確認することです。

4

1 に答える 1

2

ユーザーの入力に応じて両方を混ぜています。すでにオブジェクトを持っている場合、フォームの送信後のようにIDしか持っていない場合は、クエリビルダーに渡すためだけにモデルをロードするのは意味がないため、IDを渡します。(この場合、間違ったIDを回避するために、適切なフォーム検証が必要になることがよくあります)

于 2012-10-02T18:32:32.203 に答える