【问题标题】:How to use model object in Yii Controller and View如何在 Yii 控制器和视图中使用模型对象
【发布时间】:2013-07-08 08:34:38
【问题描述】:

我有以下方法:

public function actionIndex() {

        $companyModel = Company::model()->findAll();          
        $supplierProductModel = SupplierProduct::model()->findAll();

        $this->render('index', array(
            'companyData' => $companyModel,
            'supplierProductData' => $supplierProductModel,
        ));
    }

在这里,我已将模型对象传递给渲染函数并希望在视图中访问这些对象(活动关系类型),但是当我在视图中访问它时显示错误:

Trying to get property of non-object 

查看文件(index.php)

echo $companyData->name . "\n";
echo $this->companyModel->phone . "\n";
echo $this->companyModel->fax . "\n";
echo $this->companyModel->cell . "\n";

任何帮助将不胜感激。

【问题讨论】:

    标签: activerecord yii php yii-cmodel


    【解决方案1】:

    你需要在你的控制器/动作中声明 $this->companyModel

    $this->companyModel = Company::model()->findByPk($companyId);
    

    使用 Company::model()->findAll() 你会得到一个公司模型数组,你可以在你的视图文件中迭代。

    foreach ($companyData as $companyModel) {
        var_dump($companyModel->attributes);
    }
    

    【讨论】:

      【解决方案2】:

      因为 findAll()

      而发生这种情况

      findAll() 在多维数组中重新运行 company 表的所有行,所以这里 $companyData多维数组,现在更改索引中的代码,如下所示,

              <?php
              foreach ($companyData as $compSub)
              {
                  echo $compSub->name . "\n";
                  echo $compSub->phone . "\n";
                  echo $compSub->fax . "\n";
                  echo $compSub->cell . "\n";
              }
              ?>
      

      如果您想要一家公司数据(单行),请像这样更改您的查询

               $companyModel = Company::model()->findByPk($id_Of_company); 
               //$companyModel is single dimensional array, it has all the info of a company. 
      

      将此发送到查看

              $this->render('index', array(
              'companyData' => $companyModel,
              ....................
              ));
      

      现在您可以使用以下代码显示数据

              echo $companyData->name . "\n";
              echo $companyData->phone . "\n";
              echo $companyData->fax . "\n";
              echo $companyData->cell . "\n";
      

      【讨论】:

        【解决方案3】:

        您正在尝试从数据库中获取所有条目,因为 findAll() 返回多维对象数组中的所有数据。如果您需要所有条目,您可以在视图文件中对其进行迭代并得到如图所示的结果

        在视图文件中如图所示操作

        <?php foreach($companyData as $value){
          echo $vlaue->name . "\n";
          echo $value->phone . "\n";
          echo $value->fax . "\n";
          echo $value->cell . "\n";
         ?>
        

        这样你就可以从表中获得所有条目

        如果要使用Cdbcriteria获取特定记录使用条件并传递对象并获取单个结果

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-03-29
          • 2012-06-06
          • 2012-04-11
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多