Модель содержащая массив. Откуда растут ноги?

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
dnk588
Сообщения: 11
Зарегистрирован: 2013.07.19, 05:53

Модель содержащая массив. Откуда растут ноги?

Сообщение dnk588 » 2013.07.19, 06:04

Начал делать проект на YII. Очень радует в целом.
Но поскольку только начал, бывает застряну на какой-нибудь фигне на очень долго и буксую пока не прорвет пониманием. :-)
Вот и сейчас.
Уперся в простую казалось бы строку:
$model=new User('search');

Здесь как я понимаю создается новый класс типа User и в его конструктор передается 'search'. Посмотрел родительские класс, все равно не стало понятней.
Чудодейственным образом во вьюхе эта модель выступает в роли группы данных
'dataProvider'=>$model->search(),

Вижу еще что в самом классе User имеется метод search(). Но не вижу взаимосвязи.

Что именно непонятно: каким образом в переменной оказывается группа данных: весь список пользователей?
Как переиначить эту группу данных, то есть мне нужно допустим не весь список пользователей, а только те у которых company_id=2 например.
Весьма буду благодарен за любые подсказки.

Аватара пользователя
icewill
Сообщения: 46
Зарегистрирован: 2013.07.12, 06:45

Re: Модель содержащая массив. Откуда растут ноги?

Сообщение icewill » 2013.07.19, 06:59

Как мне кажется, вам нужно прочитать полное руководство по YiiFramework, там все подробно описано и про модели, сценарии, поиск по БД и т.д. Все это есть на данном сайте.

lancedevnull
Сообщения: 1268
Зарегистрирован: 2013.07.17, 17:37

Re: Модель содержащая массив. Откуда растут ноги?

Сообщение lancedevnull » 2013.07.19, 08:39

вначале вы передаете сценарий User('search') для того чтобы валидация не трогала аттрибуты (в методе rules) затем сбрасываете дефолтные, затем накладываете фильтр в виде массива $_POST, а метод search всего лишь снимает дамп с аттрибутов модели и строит из них критерию, затем для виджета отдает датапровайдер (это и есть конечный список). Отсюда следует - чтобы получить только id=2 надо после сброса дефолтных аттрибутов установить аттрибуту id значение 2 и метод сеарч сам сделает остальное

dnk588
Сообщения: 11
Зарегистрирован: 2013.07.19, 05:53

Re: Модель содержащая массив. Откуда растут ноги?

Сообщение dnk588 » 2013.07.19, 16:50

lancedevnull писал(а):вначале вы передаете сценарий User('search') для того чтобы валидация не трогала аттрибуты (в методе rules) затем сбрасываете дефолтные, затем накладываете фильтр в виде массива $_POST, а метод search всего лишь снимает дамп с аттрибутов модели и строит из них критерию, затем для виджета отдает датапровайдер (это и есть конечный список). Отсюда следует - чтобы получить только id=2 надо после сброса дефолтных аттрибутов установить аттрибуту id значение 2 и метод сеарч сам сделает остальное
Круто! Спасибо. Доходчиво и понятно.
icewill писал(а):Как мне кажется, вам нужно прочитать полное руководство по YiiFramework, там все подробно описано и про модели, сценарии, поиск по БД и т.д. Все это есть на данном сайте.
Полное руководство я читал, но видимо остались белые пятна на этой карте.

Ответить