Model A Mssql Server Views

Witam,

Pracuję nad aplikacją, która współpracuje z bazą MSSQL 2008. Jednym z zadań jest stworzenie wyszukiwarki produktów. Dane do wyszukiwarki będą pobierane przy pomocy widoków (views), po czym wyświetlane w CGridView. Dla przykładu dane jakie mają być zwrócone to: numer_pozycji, nazwa, ilosc_dostepna, magazyn i cena. Przy czym cena będzie dodatkowo wyliczana przy pomocy procedury.

Czy dla tego typu funkcjonalności należy tworzyć model?, w którym zostaną utworzone metody pobierające dane np.: przy pomocy createCommand. Czy wykonywać to w kontrolerze?

pozdrawiam

Cześć

Ja w przypadku kiedy nie korzystam z modelu (za duże obciążenie przy skomplikowanych zapytaniach),to korzystam z zapytań sql bezpośrednio do bazy i potem wrzucam wynik do CArrayDataProvider żeby móc wyświetlić to w CGridView.

Przeważnie na wszystkie tabele w bazie tworzę odpowiednie modele, więc kod do generowania CArrayDataProvider wrzucam jako metodę danego modelu. Model lub CArrayDataProvider przekazuję w kontrolerze jako zmienną do widoku.

.viktor. dzięki, a co w przypadku gdy nie chcę generować modelu CActiveRecord dla tabel, które łącze w views gdyż dane z nich używam tylko do wyświetlania?

Na ta chwilę stworzyłem klasę Search w katalogu models, która nie dziedziczy po CActiveRecord. Coś takiego:





class Search

{


    public function search()

    {

        $products = Yii::app()->db2->createCommand()

                ->select()

                ->from('KRproducts')

                ->where('stock > 0')

                ->limit(40)

                ->queryAll();


        $dataProvider = new CArrayDataProvider($products, array(

            'keyField' => 'itemnumber',

            'pagination' => false,

        ));

        return $dataProvider;

    }


    public static function getPrice($customerNumber, $itemnumber)

    {

        $command = Yii::app()->db2->createCommand("exec getPrice '$customerNumber','$itemnumber'");

        return $command->queryScalar();

    }


}



czy moje podejście jest prawidłowe?

Oczywiście, że tak.

Robię podobnie, klasę z metodami statycznymi, bardziej ukierunkowaną jako helper dla całej aplikacji, ale to kwestia potrzeb.

Bardzo dziękuję!