首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel多态一到多关系

Laravel多态一到多关系
EN

Stack Overflow用户
提问于 2022-03-07 00:33:15
回答 1查看 326关注 0票数 1

我想创建一个结构与模型的考试应用。

我可以想象的基本模型结构:

  • 考试
    • 试题(考试有许多问题){我认为应该变形表格}试题应该可以选择添加多个类型的问题,这些问题都是在下面指定的
      • openQuestions -问题类型
      • closedQuestions -其他问题类型
      • ……-更多的问题类型

所以我想要一个这样的结构:

有许多问题,在问题表中,我想添加任何类型的模型来扩展my 问题模型,该模型总是包含两个参数(“问题”、“最大点”和其他为问题指定的字段)。

我目前的数据库结构

我想在open_questions.中添加试题表试题表试题表closed_questions表问句E 232之间的关系。

所以我试过的是:

我在考试中添加了每种问题类型的关系,模型,,,类似于:

代码语言:javascript
复制
Exams.php //Model
    public function openQuestions()
    {
        return $this->morphedByMany(OpenQuestion::class, 'questions');
    }

    public function closedQuestions()
    {
        return $this->morphedByMany(ClosedQuestion::class, 'questions');
    }

我可以对模型进行手术,但我不认为这是一个理想的解决方案,或者应该让它保持原样。我认为有更好的方法来做这件事,但我对此并不熟悉。还是应该在所有问题类型的数组上添加一个变型关系?当我想用一个新的问题类型扩展应用程序时,它应该如何工作?

EN

回答 1

Stack Overflow用户

发布于 2022-03-07 07:13:51

如果要向Question添加条件关系,可以尝试以下方法

代码语言:javascript
复制
Exam::with(['Question' => function(MorphTo $morphTo){
        $morphTo->morphWithCount([
            ModelOne::class => ['openQuestions' => function($query){
                $query->where('id',1);
            }],
            ModelTwo::class => ['closedQuestions']
        ]);
    }]);

在上面的代码中,我们检查嵌套模型多态模型是ModelOne catch openQuestions还是关系是ModelTwo catch closedQuestions关系,还可以为使用闭包分配约束。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71375316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档