将对象从数组保存到数据库[关闭]
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 是什么的完整知识......如果你每次都想要一个新对象,你必须实例化一个......看看我的新编辑.....我最初的方式不起作用,因为它基本上是两次保存到同一个对象,所以第一个条目只是被覆盖......你必须为每个调用一个新对象条目.....查看新编辑以上是关于将对象从数组保存到数据库[关闭]的主要内容,如果未能解决你的问题,请参考以下文章