将对象从数组保存到数据库[关闭]

Posted

技术标签:

【中文标题】将对象从数组保存到数据库[关闭]【英文标题】:Save objects to database from array [closed] 【发布时间】:2013-06-09 23:45:40 【问题描述】:

我正在尝试从预定义的数据中保存几个对象。它只保存第一组数据,或者如果我更改代码,它会将数据保存为“数组”。 代码如下:

<?php

$category = array(
    'Account/Profile',
    'Blogs',
);

$question = array(
    'How do I change my email notifications',
    'How do I edit my profile details',
    'What is a blog?',
);

$answer = array(
    '<p>To change your email notifications</p>',
    '<p>To change your profile details</p>',
    '<p>A weblog, or blog, is.</p>',
);


$questionCount = count($question);
for ($i = 0; $i <= $questionCount; $i++) 
    $faq           = new Object();
    $faq->category = $category[$i];
    $faq->question = $question[$i];
    $faq->answer   = $answer[$i];


$didSave = $faq->save();

如何从数组中提取数据并使用该数据创建多个对象?

【问题讨论】:

你想对数据做什么? 已经是数组了,不需要转换。除了问题不清楚,试试更好 我真的不明白你为什么要将数据分配给一个数组,然后将该数组分配给另一个数组,然后再次第三次将该数组分配给另一个变量......这是什么意思? 我也不知道为什么要将数组分配给另一个数组大声笑,我正在尝试与其他类似文件不同的选项,所以我把它留在了代码中。我会尝试修改代码并发布更多内容。 好的,感谢KyleK,经过几分钟的处理,它现在可以工作了。如果问题属于同一类别,我会在类别数组中重复该类别。现在保存所有类别和 q/a。谢谢。 【参考方案1】:

给你....

 $cats = array('Account/Profile', 'Blogs');

 $question = array(
  'How do I change my email notifications', 
  'What is a blog?',);

 $answer = array(
  '<p>To change your email notifications you can do so from notifications page</p>', 
  '<p>A weblog, or blog, is arguably one of the fundamental DNA pieces of most types of social networking site.</p>',);

//Then count the questions and iterate
 for($i=0;$i<=count($question);$i++)
  
   $object = New Object; //Your object class
   //NEW OBJECT TO SAVE, I call it object, but you have to fill this in,
   //with whatever class/object it is youre creating, and saving
   $object->category = $cats[$i];
   $object->question = $question[$i];
   $object->answer = $answer[$i];
   $object->save();
  

基于您的转发的新编辑

 for($i=0;$i<=count($question);$i++)
 
 $faq = new ElggObject();
 $faq->subtype = 'faq';
    $faq->container_guid = $CONFIG->site_guid;
    $faq->owner_guid = $CONFIG->site_guid;
 $faq->category = $cats[$i];
 $faq->question = $question[$i];
 $faq->answer = $answer[$i];
 $faq->access_id = $access;
 if($faq->save()) 
        system_message(elgg_echo("faq:add:success"));
     else 
        register_error(elgg_echo("faq:add:error:save"));
    


【讨论】:

您需要先检查哪个数组的长度最大,否则如果数组长度可变,它将不起作用 确实如此,但是如果某些类别有多个问题,那么无论如何都会中断,无论如何......这更多地归结为他如何处理他的数据,它的方式现在,不是最佳的......所以假设博客类别有 2 个问题,我认为 $questions 是最高的,算法仍然不知道哪些问题属于哪个类别。这取决于 OP 来改变他的数据被检索/显示/组织的方式......不取决于我:) 他应该做某种 key=>value 类型结构 感谢你们这么快的反应。是的,我还没有考虑到一个类别有多个问题/答案。我将尝试发布更多代码并进行更多解释。它基本上是在常见问题解答中保存预定义的类别,并且类别有问题和答案,我想创建这些类别并为它们分配问题/答案。 这段代码只保存了 3 个数组(猫、问题、答案)中的第二组值,所以它只保存博客(类别),什么是博客? (问题)和第二个答案。 发生的原因是因为你没有向我们提供关于 $object 是什么的完整知识......如果你每次都想要一个新对象,你必须实例化一个......看看我的新编辑.....我最初的方式不起作用,因为它基本上是两次保存到同一个对象,所以第一个条目只是被覆盖......你必须为每个调用一个新对象条目.....查看新编辑

以上是关于将对象从数组保存到数据库[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

将对象保存到数据库的良好做法 [关闭]

Laravel - 从 JSON 数组创建对象以将其保存在 SQL 数据库中

如何将获取的对象保存到核心数据

如何将自定义数组保存/重新加载到 plist

如何将数据持久保存从 PHP 到 Android [关闭]

如何将获取的 iCloud 数据对象保存到单个数组中?