如果有人有使用Jens Seger的Laravel Mongo Package (https://github.com/jenssegers/laravel-mongodb)的更多经验,请帮助我。
我有jenssegers mongodb '雄辩'模型表演者,我希望我的文档看起来像这样(简化,一些不相关的字段被删除)
{
"performer" : "Bruno Mars",
"search_terms" : ["bruno mars", "pop singer", "bruno"]
}
当我在Mongo命令行中插入这个时,它看起来就像那样!完美。
但是当我在控制器中这样做时:
$tags = ["bruno mars", "pop singer", "bruno"];
$performer = new Performer; //via Moloquent (Jens extension)
$performer->performer = "Bruno Mars";
$performer->search_terms = $tags;
$performer->save();
我得到的文档看起来像这样:
{
"performer" : "Bruno Mars",
"search_terms" : {"0" : "bruno mars", "1" : "pop singer", "2" : "bruno"}
}
为什么会发生这种情况?php数组有问题吗?我是否应该创建一个像
这样的字符串数组?$searchTermsAsString = "['Bruno Mars', 'pop singer']";
?
我的模型是这样的:
class Performer extends Moloquent
{
protected $collection = "search_terms";
protected $database = 'tb_dev';
protected $connection = 'mongodb2';
//THIS IS GHETTO FIX
public function __construct()
{
parent::__construct();
}
}
我也是Mongodb的新手,所以我可能是妄想认为
("项目","第二条","item3")不同于{' 1 ':"项","2":"第二条","3":"item3"}
如果我理解正确的话一个是ARRAY另一个是OBJECT (Javascript和json中都是)
好了,我知道为什么会这样了…它与model或mongo都没有关系
我在循环中添加各种标签,在循环结束时,我运行array_unique();
以删除重复的标签。
显然,如果你array_push('item');
和'item'已经存在于数组中,它将创建数字索引:array(0 => 'item1', 1 => 'item', 2=>'item')...
当然,解决方案比我想象的要简单。
谢谢。