0

如果有人有更多使用 Jens Seger 的 Laravel Mongo 包(https://github.com/jenssegers/laravel-mongodb)的经验,请帮助我。

我有 jenssegers mongodb 'eloquent' model Performer,我希望我的文档看起来像这样(简化,删除了一些不相关的字段)

{
  "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 的新手,所以我可能会妄想

['item','item2','item3'] 不同于 {'1' : "item", '2' : "item2", '3' : "item3"}

如果我理解正确,一个是 ARRAY,另一个是 OBJECT(因为它在 Javascript 和 json 中)

4

1 回答 1

0

好的,我知道为什么会发生这种情况......它与模型或 mongo 无关

我通过循环添加各种标签,并在循环结束时运行array_unique();以删除重复的标签。

显然,如果您array_push('item');和该“项目”已经存在于数组中,它将创建数字索引:array(0 => 'item1', 1 => 'item', 2=>'item')...当然,解决方案比我想象的要简单。

谢谢。

于 2014-08-21T17:32:48.937 回答