gpt4 book ai didi

yii - 填充 CGridView 一对多关系

转载 作者:行者123 更新时间:2023-12-04 06:10:05 25 4
gpt4 key购买 nike

在我的项目中,名为 的模型之一类型 与其他模型有多重关系,部分标准低于其类似

$criteria->with = array(
'category',
'subCategory',
'accountsSupplierPriceDetails' => array(
'with' => 'serviceLevel'
)
);

这种关系就像
  • 类型 - 类别 - 关系(1-1)
  • 类型 - 子类别 - 关系(1-1)
  • 类型-accountsSupplierPriceDetails-relation(1-1)
  • accountSupplierPriceDetails - serviceLevel - 关系(1-n)

  • 我的问题是如何在网格中显示每个表的名称。 (1-n) 的结果应显示在下拉框中。当我尝试访问列中的数据时,它显示错误 试图获取非对象的属性 ($data->accountsSupplierPriceDetails->serviceLevel->name)。谁能帮帮我吗。

    提前致谢。

    最佳答案

    在我看来,我创建了一个带有 5 行的 cgridview,其中使用下拉列表填充了一行数据。

        <div style="width:700px; height:auto;">
    <?php
    $widget = $this->widget('zii.widgets.grid.CGridView', array(
    'id' => 'response-grid',
    'dataProvider' => $pickdataset->pickCategorylistingForMain(),
    'cssFile' => Yii::app()->baseUrl . '/media/css/gridview.css',
    'summaryText' => '',
    'ajaxUpdate' => 'response-grid',
    'enablePagination' => true,
    'pager' => array(
    'class' => 'LinkPager',
    'cssFile' => false,
    'header' => false,
    'firstPageLabel' => 'First',
    'prevPageLabel' => 'Previous',
    'nextPageLabel' => 'Next',
    'lastPageLabel' => 'Last',
    ),
    'columns' => array(
    array(
    'name' => 'id',
    'header' => '#',
    'value' => '$this->grid->dataProvider->pagination->currentPage * $this->grid->dataProvider->pagination->pageSize + ($row+1)',
    ),
    array(
    'type' => 'raw',
    'name' => 'categoryExt',
    'header' => 'Category',
    ),
    array(
    'type' => 'raw',
    'header' => 'Sub Category',
    'value' => '$data->subCategory->name',
    ),
    array(
    'type' => 'raw',
    'name' => 'locationExt',
    'header' => 'Location',
    ),
    array(
    'type' => 'raw',
    'header' => 'Name',
    'value' => 'CHtml::dropDownList($data->corporate_id."-".$data->category_id."-".$data->sub_category_id."-".$data->location_id,"",popDropBox($data->masterCategoryServiceLevels), array("class" => "listbox"), array("empty" => "Select a Location"))',
    ),
    array(
    'type' => 'raw',
    'header' => 'Pick',
    'value' => 'CHtml::image(Yii::app()->baseUrl . "/media/images/edit_icon.png",$data->corporate_id."-".$data->category_id."-".$data->sub_category_id."-".$data->location_id,array("title" => "Select this Combination"))',
    ),
    ),));

    function popDropBox($data)
    {
    $list = array();
    foreach ($data as $row)
    {
    $list[$row->serviceLevel->id] = $row->serviceLevel->name;
    }
    return $list;
    }
    ?>
    </div>

    模型中的关系是:
    'masterCategoryServiceLevels' => array(self::HAS_MANY, 'MasterCategoryServiceLevel', 'category_template_id'),
    'corporate' => array(self::BELONGS_TO, 'AccountsCorporate', 'corporate_id'),
    'category' => array(self::BELONGS_TO, 'MasterCategory', 'category_id'),
    'subCategory' => array(self::BELONGS_TO, 'MasterCategory', 'sub_category_id'),
    'location' => array(self::BELONGS_TO, 'MasterLocation', 'location_id'),

    该行是
    array(
    'type' => 'raw',

    'header' => 'Name',

    'value' => 'CHtml::dropDownList($data->corporate_id."-".$data->category_id."-".$data->sub_category_id."-".$data->location_id,"",popDropBox($data->masterCategoryServiceLevels), array("class" => "listbox"), array("empty" => "Select a Location"))',
    ),

    我使用一个函数来创建下拉数据是
    function popDropBox($data)
    {
    $list = array();
    foreach ($data as $row)
    {
    $list[$row->serviceLevel->id] = $row->serviceLevel->name;
    }
    return $list;
    }

    如果您有任何疑问,请发表评论。我可以自由分享......祝你有美好的一天,所以 friend ......祝福和祈祷。

    关于yii - 填充 CGridView 一对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7874003/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com