Markdown

[Symfony] Repository 模式

http://oomusou.io/laravel/laravel-repository/

今天將原本的SQL語法從Controller抽出來,
獨立成一個 function 放在 Repository Class 下面,
再由Controller去呼叫。

撈完之後會回傳一堆物件,
這時候再去Entity另外寫一個 function getTradeArray() ,
把所有需要的屬性包在陣列裡面回傳,
這樣做Response打包成JSON的時候就方便了許多,
也不用再對需要的屬性去做很多次 Object->getSomething() 。

這樣處理過後,Controller就會乾淨許多,盡量讓不相關的邏輯獨立出來。

<?php namespace AppBundle\Repository; use Doctrine\ORM\EntityRepository; class TradeRepository extends EntityRepository { /** * This function will be called by searchAction and return search results. */ public function findTradesByBankID($behavior, $id, $from, $to) { $em = $this->getEntityManager(); $query = $em->createQuery( 'SELECT t FROM AppBundle:Trade t WHERE t.behavior = :behavior AND t.bank = :bid ORDER BY t.id DESC' ) ->setParameter('behavior', $behavior) ->setParameter('bid',$id) ->setFirstResult($from) ->setMaxResults($to - $from + 1); $result = $query->getResult(); return $result; } }

留言