1

我是 yii 开发中的新手,在使用 cgridview 显示数据时遇到问题,因为它只显示第一条记录 Motel、Hotel、Roomcategory 和 halls 是 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',

                ),

            ));
4

1 回答 1

2

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

$model->search();

这会从特定表中搜索多个值,但您已将属性设置为仅匹配一条记录。

要获取汽车旅馆 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();

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

于 2013-05-12T20:05:09.247 回答