我的cgridview只显示yii中的一条记录

时间:2013-05-12 14:24:53

标签: yii yii-components cgridview

我是yii开发中的newbii,在使用cgridview显示数据时出现问题,因为它只显示第一条记录 汽车旅馆,酒店,客房类别和大厅都是PK和FK通过的模特...... 代码在这里

    $sponsorm = Motel::model()->find('MotelId=:MotelId', array(':MotelId'=>Yii::app()->user->id));
      $sponsorhotel = Hotel::model()->find('hotelId=:hotelId', array(':hotelId'=>$sponsorm->MotelId));
      $room = Roomcategory::model()->find('hotelId=:hotelId', array(':hotelId'=>$sponsorhotel->hotelId));
      $halls = Halls::model()->find('hotelId=:hotelId', array(':hotelId'=>$sponsorhotel->hotelId));

           echo CHtml::image(Yii::app()->request->baseUrl.'/img/4.png'); 

         $this->widget('zii.widgets.grid.CGridView', array(
        'id'=>'businessowner-grid',
        'dataProvider'=>$room->search(),
       //'filter'=>$sponsore,
            'columns'=>array(
            'roomCategoryNames',
            'noOfRooms',
            'price',

                    ),

                ));


$this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'businessowner-grid',
    'dataProvider'=>$halls->search(),
   //'filter'=>$sponsore,
        'columns'=>array(
        'Type',
        //'noOfHalls',
        'seats',
        'price',

                ),

            ));

1 个答案:

答案 0 :(得分:2)

现在您只找到一条记录,因为您使用find来获取一条特定记录。因此,您将此记录数据分配给模型变量,然后执行

$model->search();

这会从特定表中搜索多个值,但您已设置属性,以便它只匹配一条记录。

要获取Motel gridview数据,请使用以下代码:

$sponsorm = $dataProvider=new CActiveDataProvider('Motel', array(
    'criteria'=>array(
        'condition'=>'MotelId = :MotelId',
        'params' => array(':MotelId'=>Yii::app()->user->id)
    ),
));

它与search()的作用相同,但区别在于搜索条件不同。您也可以使用以下代码。

$motelModel = new Model();
$motelModel->MotelId = Yii::app()->user->id;

现在只分配了一个属性,即设置一个条件以匹配在MotelId字段中具有此用户ID的所有行。

$modelModel->search();

另外,我看到你在逻辑之间回应一些东西。请不要这样做。仅在视图中输出数据并使逻辑不在视图中。 :)