Yii Framework: Создание CActiveDataProvider с подробностями из двух таблиц - PullRequest
0 голосов
/ 17 января 2012

У меня есть отношение к базе данных следующим образом: таблица вопросов и Таблица сведений об оборудовании . Вопрос и HardwareDetail имеет отношение многие ко многим. и таблица tbl_quesionhardwaredetial содержит еще одно новое свойство, которое называется answer

Я хочу создать активный поставщик данных (CActiveDataProvider) со списком вопросов и соответствующих ответов для конкретной детали оборудования.

У меня есть соответствующие вопросы для конкретной детали оборудования, используя следующие критерии.

$quesionsDataProvider=new CActiveDataProvider('Question', array(
            'criteria'=>array(
                'with'=>array('hardwaredetails'=>array( 
                        'on'=>'hardwaredetail_Id=' .$modelHD->Id, 
                        'together'=>true,
                        'joinType'=>'INNER JOIN', 
                )),
            ),
            'pagination'=>array(
                'pageSize'=>10,
            ),
        ));

Но как я могу прикрепить ответ к списку полученных вопросов.

Заранее спасибо за любую помощь

. enter image description here

Ответы [ 2 ]

3 голосов
/ 17 января 2012

Вместо создания CActiveDataProvider вы можете создать CSqlDataProvider, который является более гибким, и вы можете писать SQL-запросы вручную

Пример:

$dataProvider = new CSqlDataProvider($qry, array(
                'keyField' => 'id',
                'totalItemCount' => $count,
                'sort' => array(
                    'attributes' => array('field1','field2')
                ),
                'pagination' => array(
                    'pageSize' => 5
                )
                    )
    );

$ qry = ваш SQL-запрос для выбора записей

$ count = нет записей (вам нужно изменить значение выше $ qry, чтобы найти количество записей)

'keyField' = вы должны упомянуть keyField, если вы используете другое поле первичного ключа, отличное от 'id'

дальнейшее чтение CSqlDataProvider

1 голос
/ 17 января 2012

Если вы хотите прикрепить ответ к вопросу, все, что вам нужно сделать, это:

$quesionsDataProvider=new CActiveDataProvider('Question', array(
        'criteria'=>array(
            'with'=>array('answers', 'hardwaredetails'=>array(  //  etc...

Так что просто добавьте имя связи модели Вопроса с моделью Ответа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...