2

私はYiiで小さなアプリケーションをやっています。そのために私はこのようなデータベースを持っています

=============
 +   GROUP    +
 =============
 + id(pk)     +
 + name       +
 + description+
 ++++++++++++++


  =============
 +   MEMBERS  +
 ==============
 + id(pk)      +
 + group_id(fk)+
 + name        +
 + description +
 ++++++++++++++

の関係Group modelはこんな感じ

public function relations()
  {
    return array(
      'members' => array(self::HAS_MANY,'Members','group_id'),
    );
  }

との関係Members modelはこんな感じ

 public function relations()
  {
    return array(
      'group' => array(self::BELONGS_TO,'Group','group_id'),
    );
  }

要件に従って私は持っていますrendered Members in Group model。だから私controller for action createはこのようなものです

    public function actionCreate()
  {
    $model=new Group;
    $members=new Members;
    // Uncomment the following line if AJAX validation is needed
     $this->performAjaxValidation($model);

    if(isset($_POST['Group'],$_POST['Members']))
    {
      $model->attributes=$_POST['Group'];
      $members->attributes=$_POST['Members'];
      $valid = $model->validate();
      $valid = $members->validate();
      if($valid)
      {
        $members->save(false);
        $group->save(false);
        $members->group_id = $model->getPrimaryKey();

        $model->save(false);
        $this->redirect(array('view','id'=>$model->id));
      }
    }
    $this->render('create',array(
      'model'=>$model,
      'members'=>$members,
    ));
  }

だからこれによって。しかし、primarykey of Group model should be same as the forignkey of group_id in the members modelそれはそのように表示されていません。group_id is remaining '0'毎回。誰かがここで間違っている部分を教えてもらえますか?

4

1 に答える 1

0

あなた$model->getPrimaryKey()が呼んでいるもの:

  • まず、として使用することができます$model->primaryKey
  • 次に、まだ挿入されていない新しいレコードの主キーを返すため、主キーがありません。

子を追加する前に、最初に親レコードを保存し$group->save(false);てください。これ$groupはモデルではありません:)

于 2012-08-17T08:45:34.667 に答える