Yii中的动作Update()更新另一个模型的更新

时间:2012-02-14 12:15:20

标签: mysql yii relational-database

我有这样的数据库

 === Invoice ===
 id
 customer_id (FK)
 description

 === Customer ===
 id
 firstname
 lastname

我有两个表单的多模型,以便Cstomer表将在Invoice中加载。这样我就可以从一个视图轻松访问这两个模型。为此,我在这两个模型中建立了关系 在Invoice模型中,实现就像这样

  public function relations()
  {
    return array(
    'customer'    =>  array(self::BELONGS_TO,'Customer','customer_id'),
    );
  }

在客户模型中,关系就像这样

public function relations()
  {
    return array(
      'invoice' => array(self::HAS_MANY, 'Invoices','customer_id')
    );
  }

一切正常。但是当我在Invoice控制器文件中使用actionUpdate()时,没有定义Customer模型。所以我把它定义为这样

 public function actionView($id)
  {
    $this->render('view',array(
      'model'=>$this->loadModel($id),
      'customers'=>Customers::model()->findByPk(array('customer_id'=>$_GET['id']));
    ));
  }

显示为Undefined offset:0。我想在('customer_id'=> $ _ GET ['id'])id的值中,以便我可以轻松地显示和更新每个id的值。 如果我给出这样的价值

public function actionView($id)
  {
    $this->render('view',array(
      'model'=>$this->loadModel($id),
      'customers'=>Customers::model()->findByPk(28);
    ));
  }

很容易显示客户ID的值。那么如何获得这些价值呢?任何帮助和建议都会非常适合。

1 个答案:

答案 0 :(得分:0)

试试这个

public function actionView($id)
  {
    $model = $this->loadModel($id);
    $this->render('view',array(
      'model'=>$model,
      'customers'=>Customers::model()->findByPk($model->customer_id);
    ));
  }