【问题标题】:one to many save, codeigniter DataMapper一对多保存,codeigniter DataMapper
【发布时间】:2013-03-13 00:22:00
【问题描述】:

在用户可以添加视频的网站上工作。每个视频可以分为多个部分。它也可以有很多问题。 Video 与 question 和 section 类都是一对多的关系。

我得到这样的部分和视频课程:

    $s = new Section();
    $s->where('section', $this->post->section)->get();

然后像这样保存:

    $v->save($u, $s, $q);

其中 $v 是视频对象,$u 是用户对象,$q 是问题对象。

我想允许用户发布多个问题和部分。我如何保存这些关系。 $s 和 $q 应该是对象数组吗?

【问题讨论】:

    标签: codeigniter codeigniter-2 codeigniter-datamapper


    【解决方案1】:

    我不是 100% 确定我明白你的意思,但是是的,你可以同时保存多个关系。

    像这样:

    $s = new Section();
    $s->where_in('section', $array_with_sections_ids)->get();
    
    $v->save(array($u, $s->all, $q));
    

    【讨论】:

    • 谢谢。这正是我想要的。不知道我是怎么在文档中错过的。
    【解决方案2】:

    您在数据库中使用不同的表。像 Video、Question 和 VideoQuestion 一样,您将视频 ID 与不同的 Question id 一起存储

    然后 VideoExample 看起来像:

    | video_id | question_id |
    --------------------------
    |    1     |      1      |
    |    1     |      5      |
    ...
    

    为了插入这个数据,首先插入视频并用

    获取它的ID
    $videoId = $this->db->insert_id()
    

    对你的问题做同样的事情,你就有了你的 ID ;) 其他表也一样,你就完成了。祝你好运!

    【讨论】:

    • 我已经设置了所有的关系表,并且单个保存工作得很好。例如,我可以保存视频和部分之间的关​​系。我需要做的是保存视频和任意数量的部分之间的关​​系。有没有一种快速的方法可以做到这一点,还是我必须每次都遍历 $_POST['sections'] 并保存一个关系?抱歉,如果我的问题不清楚。
    猜你喜欢
    • 2014-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多