下記公式ドキュメントがとてもわかりやすい。
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を用いて自分でリレーションテーブルを定義してやればよい。