在编辑或创建模型时,从另一个表设置联接表的默认值

问题描述 投票:0回答:1

希望某人可以将我指向正确的方向。

我有一个包含(除其他事项外)建议和评估的应用。它们与一个联接表联接在一起,该联接表包括我想更新但又想弄清楚如何的额外字段。

Data model

正如您在上面看到的,当我创建推荐时,我设置了以下字段:

  • default_user_impact
  • default_business_impact
  • default_deployment_complexity
  • default_criticality

现在,当我创建新评估或编辑未链接任何建议的评估时,由于不需要将任何内容写入联接表,因此可以节省评估。

[当我尝试编辑评估以包括一个或多个建议时,该应用尝试将链接写入连接表并失败,因为未指定user_impact,business_impact,deployment_complexity和Criticality字段-完全正常,因为我已经设置了MySQL中必需的字段对吗?我在CakePHP中遇到的错误是

SQLSTATE [HY000]:常规错误:1364字段'user_impact'没有默认值

我想做的是在编辑或创建评估时,使用推荐表中的值填充相应的联接表条目。任何想法如何去做?

举个例子:

  • user_impact = default_user_impact
  • business_impact = default_business_impact
  • deployment_complexity = default_deployment_complexity
  • critical = default_criticality

之所以这样做,是因为我可以为这些建议设置这些字段的值,然后,如果用户想要运行评估,而他们只是想为自己的评估调整值,那么它将不会。不会影响他人,等等。

这是我的评估表关联。

    $this->belongsToMany('Recommendations', [
        'foreignKey' => 'assessment_id',
        'targetForeignKey' => 'recommendation_id',
        'joinTable' => 'assessments_recommendations',
        'through' => 'assessments_recommendations',
    ]);

这是我的RecommendationsTable关联。

    $this->belongsToMany('Assessments', [
        'foreignKey' => 'recommendation_id',
        'targetForeignKey' => 'assessment_id',
        'joinTable' => 'assessments_recommendations',
        'through' => 'assessments_recommendations',
    ]);

任何帮助将不胜感激。

mysql cakephp cakephp-3.0
1个回答
0
投票

您是否考虑过编写规则来处理此问题?

https://book.cakephp.org/3/en/orm/validation.html#applying-application-rules

© www.soinside.com 2019 - 2024. All rights reserved.