0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Doctrineで主キーの無いテーブルに対してSELECTをかける

Posted at

データを取りたいが重複したデータ(先頭データ)しか取れない

コントローラ内で、

KaraagekunController.php
$this->KaraagekunRepository->findBy(['id' => $id]);

としてRepository経由でfindByしてデータを取ろうとしたら、
同じレコードが3件返ってきていた。
件数は3件で間違っていないものの、同じレコードが返ってくるのはおかしいと思って調べました。

doctrineでは主キーの無いテーブルを推奨していない

みたいです。
なので、主キーの無いテーブルに対してレコード取ろうとしてて、
doctrine側でレコードが認識できずに変な値が返ってくるみたいですね。

解決方法

Repository内でQueryBuilderを使って取るしか方法なさそうでした。

KaraagekunRepository.php
public function getData($id) {
    return $this->createQueryBuilder('t')
      ->select('t.id, t.type, t.price')
      ->where('t.id = :id')
      ->setParameter('id', $id)
      ->getQuery()
      ->getResult();
}
KaraagekunController.php
$result = $this->KaraagekunRepository->getData($id);

そもそも主キーの無いテーブルがいいのか悪いのかって議論があると思いますが、
一応こういうやり方で取れましたっていう報告です。
ご参考までに!

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?