[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;
    }
}
留言
張貼留言