Doctrineを使ってデータベースからデータを引っ張ってくるとき、
メソッド名にカラム名を追加しなくちゃいけないことに気がつかなくてはまった。
マニュアルにだけじゃわかりにくいなー。
オブジェクトのフェッチ
プライマリーキーからレコードを取得
$product = $repository->find($id);
カラムから該当するレコードの最新のものをひとつ取得。
findOneBy+カラム名の一文字目を大文字にして指定する。
$product = $repository->findOneById($id); $product = $repository->findOneByUsername($user);
テーブル内のすべてのレコードを取得
$products = $repository->findAll();
カラムから該当するレコードをすべて取得。
findBy+カラム名の一文字目を大文字にして指定する。
$products = $repository->findByImage($img);
使い方はこんな感じ。
usernameカラムから該当するレコードをすべて取得する。
<?php namespace test\demoBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use test\demoBundle\Entity\Plans; class UserController extends Controller { public function indexAction($username) { $name = $this->getDoctrine()->getRepository('testdemoBundle:Info')->findByUsername($username); return $this->render('testdemoBundle:Default:user.html.twig',array('usr' => $name)); } }
テンプレート側で表示
フェッチしたデータをテンプレート側で表示する。
{% for u in usr %} <div class="name">{{ u.name }}</div> <p class="country">{{ u.country }}<p> {% endfor %}
まだ全然使いこなせてないけど、
基本はこれでいいのかな。