Php 外键未存储相关型号的实际值

Php 外键未存储相关型号的实际值,php,mysql,yii,relational-database,Php,Mysql,Yii,Relational Database,我正在用Yii做一个小应用程序。为此,我有这样的数据库 ============= + GROUP + ============= + id(pk) + + name + + description+ ++++++++++++++ ============= + MEMBERS + ============== + id(pk) + + group_id(fk)+ + name + + descripti

我正在用Yii做一个小应用程序。为此,我有这样的数据库

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


  =============
 +   MEMBERS  +
 ==============
 + id(pk)      +
 + group_id(fk)+
 + name        +
 + description +
 ++++++++++++++
public function relations()
  {
    return array(
      'members' => array(self::HAS_MANY,'Members','group_id'),
    );
  }
群模型中的关系是这样的

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


  =============
 +   MEMBERS  +
 ==============
 + id(pk)      +
 + group_id(fk)+
 + name        +
 + description +
 ++++++++++++++
public function relations()
  {
    return array(
      'members' => array(self::HAS_MANY,'Members','group_id'),
    );
  }
成员模型中的关系是这样的

 public function relations()
  {
    return array(
      'group' => array(self::BELONGS_TO,'Group','group_id'),
    );
  }
    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,
    ));
  }
根据要求,我在组模型中呈现了成员。所以我的动作创建控制器如下

 public function relations()
  {
    return array(
      'group' => array(self::BELONGS_TO,'Group','group_id'),
    );
  }
    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应该与成员模型中组id的forignkey相同。但它不是这样显示的。组id每次都保持为“0”。有人能告诉我这里的错误部分是什么吗?

您正在调用的$model->getPrimaryKey:

首先,可以用作$model->primaryKey 第二个是返回一个新记录的主键,该记录尚未插入,因此它没有主键。 在添加任何子$group->savefalse之前,先保存父记录;正在尝试这样做,但$group不是一个模型:

您正在调用的$model->getPrimaryKey:

首先,可以用作$model->primaryKey 第二个是返回一个新记录的主键,该记录尚未插入,因此它没有主键。 在添加任何子$group->savefalse之前,先保存父记录;正在尝试这样做,但$group不是一个模型:

我不相信getPrimaryKey在保存模型之前会返回任何内容,您只能在$model->save之后使用它,并且您在$members->save之后设置$members->group\u id,而且它看起来像$group->savefalse;应为$model->savefalse;?我不相信getPrimaryKey会在保存模型之前返回任何内容,您只能在$model->save之后使用它,并且您在$members->save之后设置$members->group\u id,而且它看起来像$group->savefalse;应为$model->savefalse;?