【问题标题】:Recursive Many to many relationship with Yii与 Yii 的递归多对多关系
【发布时间】:2014-05-24 19:07:57
【问题描述】:

我与objective 有一个递归的多对多关系。我的关系模型是:

CREATE TABLE master.objectives
(
  id serial NOT NULL,
  name character varying(100),
  CONSTRAINT pkey_objectives PRIMARY KEY (id),
  CONSTRAINT fk_objectives_perspective FOREIGN KEY (perspective_id)
      REFERENCES master.perspective (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION
)

CREATE TABLE master.relatedobjectives
(
  parent integer NOT NULL,
  child integer NOT NULL,
  CONSTRAINT relatedobjectives_pkey PRIMARY KEY (parent, child),
  CONSTRAINT fk_child_objectives FOREIGN KEY (child)
      REFERENCES master.objectives (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION,
  CONSTRAINT fk_paret_objectives FOREIGN KEY (parent)
      REFERENCES master.objectives (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION
)

我已经在 Yii 框架中使用 gii 生成了我的模型,如下所示:

Objective.php

public function relations() {
    // NOTE: you may need to adjust the relation name and the related
    // class name for the relations automatically generated below.
    return array(
        'parents' => array(self::HAS_MANY, 'Relatedobjectives', 'parent'),
        'children' => array(self::HAS_MANY, 'Relatedobjectives', 'child'),
    );
}

objectives/_form.php

<div class="row">
    <?= $form->checkBoxList($model,'parents', 
                            CHtml::listData(Objective::model()->findAll(array('order' => 'id')), 'id', 'name')
            ) ?>
</div>

在我提交表单时的视图中,没有将关系保存在相关目标表中。

我做错了什么?

【问题讨论】:

    标签: yii many-to-many gii yii-cactiverecord cactiverecord


    【解决方案1】:

    相关模型不会与父模型一起保存。您必须手动将它们保存在父母 beforeSave()afterSave() 挂钩中。还有一些扩展可以自动执行此操作。查看here 以获取有关该主题的一些信息。

    【讨论】:

      猜你喜欢
      • 2015-02-27
      • 2021-01-28
      • 1970-01-01
      • 2015-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-25
      • 2019-09-12
      相关资源
      最近更新 更多