Нужна помощь в понимании модели и поставщика данных - PullRequest
3 голосов
/ 10 февраля 2012

Я новичок в Yii и пытаюсь понять это, создав веб-сайт для хобби, чтобы управлять своими покупками продуктов. Я пытаюсь создать страницу со списком моих рецептов и кнопкой +/- рядом с каждым рецептом, которая при нажатии обновляет список покупок на той же странице. Все ингредиенты рецепта и список покупок хранятся в базе данных SQL.

Пока у меня есть контроллер ShoppingListController, и в моей функции actionIndex () (которая показывает рецепты и список покупок) я создаю два провайдера данных и модель (для кнопок +/-, которые являются формой) и передаю Их на мой взгляд выглядит следующим образом:

        // Create a shopping list item model
        $shoppingListModel = new TblShoppingListItem;

        // Get the saved shopping list data from the shopping list table
        $shoppingDataProvider = new CActiveDataProvider('TblShoppingListItem', array(
            'criteria'=>array(
                'select'=>array('recipe_id', 'recipe_multiplier')), 
            'pagination'=>array('pageSize'=>500)
        ));

        // Get the recipe ingredient data from the recipe models and order by recipe name           
        $recipeDataProvider = new CActiveDataProvider('TblRecipeIngredient', array(
            'criteria'=>array(
                'select'=>array('recipe_id', 'ingredient_id', 'ingredient_unit_id', 'ingredient_amount'),   
                'with'=>array('recipe','ingredient','ingredientUnit'),
                'together'=>true,
                'order'=>'recipe.name ASC'),
            'pagination'=>array('pageSize'=>500)
        ));

        // Render the 'shoppinglist/show' page
        $this->render('show', array(
            'recipeDataProvider'=>$recipeDataProvider, 
            'shoppingDataProvider'=>$shoppingDataProvider,
            'shoppingListModel'=>$shoppingListModel
        ));

Я немного сбит с толку - мне кажется, мне нужна модель для перехода в +/- формы, мне нужен первый поставщик данных, чтобы я мог отобразить свой список покупок, и мне нужен второй поставщик данных, чтобы я мог отображать свои Информация о рецепте.

Однако мне интересно, нужны ли мне на самом деле shoppingListModel и shoppingDataProvider (т. Е. Имеет плохую практику)? Могу ли я получить необходимую информацию только от модели? Меня смущает разница между моделью и поставщиком данных.

1 Ответ

0 голосов
/ 20 марта 2012

Это ваш выбор, использовать или не использовать провайдер данных. Я использую провайдеры данных только тогда, когда мне нужно разбить на страницы или в виде сетки, каждый раз, когда я просто использую данные из моделей.

Поставщики данных предоставляют дополнительные возможности управления данными, но если вам нужны только данные, я думаю, вы должны использовать модели.

...