簡體   English   中英

yii 1關系在CGridView中不起作用

[英]yii 1 relation not working in CGridView

我正在嘗試獲得companies表具有主鍵companyIDdivision表具有外鍵companyID ,我在where子句中需要的是WHERE companies.companyID = division.companies我的模型中的關系是:

public function relations()
    {
        return array(
            'company' => array(self::BELONGS_TO, 'Companies', 'CompanyID'),
        );
    }

我的Model->search()函數是

public function search()
{
    $criteria=new CDbCriteria;
    $criteria->with ='company';
    $criteria->compare('company.CompanyID', $this->CompanyID, true );
    $criteria->compare('DivisionID',$this->DivisionID, true);
    $criteria->compare('CompanyID',$this->CompanyID, true);
    $criteria->compare('Name',$this->Name,true, true);

    return new CActiveDataProvider($this, array(
        'criteria'=>$criteria,
    ));
}

而我的admin.php視圖是:

 <?php
$this->breadcrumbs = array(
    'Divisions' => array('index'),
    'Manage',
);

$this->menu = array(
    array('label' => 'List Divisions', 'url' => array('index')),
    array('label' => 'Create Divisions', 'url' => array('create')),
);

   ");
?>

<div class="row">
    <?php
    $this->renderPartial('_dropdownfilter', array(
        'model' => $model,
    ));
    ?>
</div><!-- end dropdown partial form -->
<?php
$this->widget('zii.widgets.grid.CGridView', array(
    'id' => 'divisions-grid',
    'dataProvider' => $model->search(),
    'filter' => $model,
    'columns' => array(
        'CompanyID',
        'DivisionID',
        'Name',
        array(
            'class' => 'CButtonColumn',
        ),
    ),
));
?>

您需要將together=true添加到您的條件中。

$criteria->together = true;

它將添加聯接到查詢。 有關延遲加載的一些信息http://www.yiiframework.com/wiki/527/relational-query-lazy-loading-and-eager-loading-with-and-together/

如果要顯示公司名稱,請在視圖中執行。不要在model-> search()中進行任何更改。 array('name'=>'Name','value'=> $ model-> company-> name //這里name是公司表中的列名。),

在您的gridview代碼中進行以下更改。

$this->widget('zii.widgets.grid.CGridView', array(
    'id' => 'divisions-grid',
    'dataProvider' => $model->search(),
    'filter' => $model,
    'columns' => array(
        array(
            'name' => 'companies',//fied from division table which refers to companyId from company table.
            'header' => 'Company',
            'value' => '$data->company->company_name'
        ),
        'CompanyID',
        'DivisionID',
        'Name',
        array(
            'class' => 'CButtonColumn',
        ),
    ),
));

並在您的模型-> search()中

public function search()
{
    $criteria=new CDbCriteria;
    $criteria->with ='company';
    $criteria->compare('company.company_name', $this->companies, true );
    $criteria->compare('DivisionID',$this->DivisionID, true);
    $criteria->compare('CompanyID',$this->CompanyID, true);
    $criteria->compare('Name',$this->Name,true, true);

    return new CActiveDataProvider($this, array(
        'criteria'=>$criteria,
    ));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM