[Symfony] Repository 模式
http://oomusou.io/laravel/laravel-repository/
今天將原本的SQL語法從Controller抽出來,
獨立成一個 function 放在 Repository Class 下面,
再由Controller去呼叫。
撈完之後會回傳一堆物件,
這時候再去Entity另外寫一個 function getTradeArray() ,
把所有需要的屬性包在陣列裡面回傳,
這樣做Response打包成JSON的時候就方便了許多,
也不用再對需要的屬性去做很多次 Object->getSomething() 。
這樣處理過後,Controller就會乾淨許多,盡量讓不相關的邏輯獨立出來。
今天將原本的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;
}
}
留言
張貼留言