下記公式ドキュメントがとてもわかりやすい。
http://docs.symfony.gr.jp/symfony2/cookbook/console.html
コンソール出力に装飾もできたりして、とても便利。
下記公式ドキュメントがとてもわかりやすい。
http://docs.symfony.gr.jp/symfony2/cookbook/console.html
コンソール出力に装飾もできたりして、とても便利。
SymfonyにはデフォルトでDOMのパーサーが組み込まれているのでこれを用いると便利。
詳細と使い方は下記公式ページを参照されたし。
http://symfony.com/doc/current/components/dom_crawler.html
個人的には「Simple HTML DOM Parser」のほうが使いやすくて好きかな。
jQueryと同様のセレクタで要素を辿れるしComposerでもインストールできるしまじ便利。
とても簡単。
まずはapp.phpの下記2行のコメントアウトを外す。
require_once __DIR__.'/../app/AppCache.php'; $kernel = new AppCache($kernel);
んでコントローラーで下記のようにレスポンスを返す。
$response = new Response();
$response = $this->render('HogeFugaBundle:Default:index.html.twig');
$response->setPublic();
$response->setSharedMaxAge(300);
return $response;
以上、完了!
これだけで組み込みリバースプロキシの共有キャッシュが動作するなんて素敵過ぎる。
下記スライドにわかりやすく纏められてます。(感謝!)
http://www.slideshare.net/hidenorigoto/symfony2http-cache-reverse-proxy
例えば、記事とカテゴリがあって、カテゴリの数が多い順でカウント、ソートしたい場合のDQLは下記の通りになる。
$dql = "select
            c.id,
            c.name,
            count(c.id) as cnt
        from
            HogeFugaBundle:Categories as c
        join
            c.articles as a
        where
            c.status = 1
        group by
            c.id
        order by
            cnt desc
";
DQLでのjoinのやり方は面白いね。
メモ。
$em->getRepository('HogeFugaBundle:Piyo')->findBy([
    'id' => 1
], [
    'createdAt' => 'desc'
]);
ようはfindByの第2引数に配列でオーダーを渡してやればOK。
まずはservice.ymlで下記のように定義。
services:
    your.service:
        class: YourVendor\YourBundle\Service\YourService
        arguments: [ @doctrine.orm.entity_manager ]
そしてサービスはこんな感じ。
namespace ...\Service;
use Doctrine\ORM\EntityManager;
class YourService
{ 
    protected $em;
    public function __construct(EntityManager $em)
    {
        $this->em = $em;
    }
}
完璧だね。
下記のようにすればOK。
return $this->getEntityManager()
        ->createQuery('...')
        ->setMaxResults(5)
        ->setFirstResult(10)
        ->getResult();
setMaxResults()がlimit、setFirstResult()がoffsetを表す。
時は下記のようにすればOK。
安定のstackさん。
One-to-ManyとMany-to-Oneを用いて自分でリレーションテーブルを定義してやればよい。