私はEntity:Companyを持っていますが、これには列:Typeがあります。列が配列の場合はどのようにするのですか?
Typeには、文字列または文字列の配列を指定できます。
例:タイプは "Foo"、 "Bar"、または配列( "Foo"、 "Bar")にすることができます。
"バー"が含まれているすべての会社を取得する方法を理解できません。
私は唯一のタイプは「バー」である企業ではなく、それは、配列(「フー」、「バー」)であるものをフェッチ
$qb = $this->companyRepository()->createQueryBuilder("c");
$companies = $qb
->select("c")
->Where($qb->expr()->in('c.type', array($qb->expr()->literal('Bar'))))
->getQuery()
->getResult();
を試してみました。
$ qb-> expr() - > in(..)の代わりに$ qb-> expr() - > like(...)を同じ結果で試しました。
タイプに "バー"が含まれている会社を取得するにはどうすればよいですか? (タイプには例として挙げた3つの値以上のものがあります)
イベントを教義は、データベースレベルで、あなたは、アレイ列型を使用することができますけれども個々の配列要素にアクセスすることはできません(結局のところ、テキストの塊です)。そのようなものとして、それらのクエリを実行することはできません。正規表現のクエリ、またはデータベースの正規化の2つのオプションがあります。 – Yoshi
興味深い。データベースを正規化できません。正規表現はどのように私を助けることができますか?私はすべての企業を取得し、foreachループで型をテストする必要があると仮定します。 – abernard
doctrine配列の列型では、配列の値の中にカンマがないことが必要です。ですから、あなたが検索できる値は、列内の値だけでなく、コンマで始まるか、カンマで終わるか、あるいはその両方でなければなりません。そして、これらの4つのケースでは、有効な正規表現を書いて、それをあなたのcirteriaとして使う必要があります。 – Yoshi