gpt4 book ai didi

php - 如何使用 Laravel 4 将对象插入到 MongoDB 文档中

转载 作者:太空宇宙 更新时间:2023-11-03 23:38:26 25 4
gpt4 key购买 nike

我是 Laravel MongoDB 的新手,我想在这里提一个问题,我的 Mongo 文档的大纲应该是这样的

{
_id:****,
subscriptions: [{list_id: "14Q3"},
{list_id: "153"}],
offers: [ { targetURL: "www.qwerty.com", title: "25% discount" },
{ targetURL: "www.abcd.com", title: "55% discount" } ],
}

我使用以下代码插入列表 ID(成功)。

DB::connection('mongodb')->collection('subscribers')->insert(array(
'_id' => $subscriber->device_id,
'subscriptions' => array('list_id' => $subscriber->list1_id),
));

但是当我尝试将另一个 list_id 作为下一个对象推送时,它显示错误。我使用以下代码进行推送

DB::connection('mongodb')->collection('subscribers')
->push('subscriptions', array('list_id' => $subscriber->list1_id));

我不知道我的代码是对还是错。我需要按照上面给出的轮廓存储数据。这是我的实际问题。请纠正我......

我的 Controller 如下所示,我为每个订阅者创建新的集合。问题是第二个“if”语句

public function store() {

$newsubscriber = Input::json();
//DB::connection('mongodb')->collection($newsubscriber->get('device_id'))->delete();
$result = Subscriber::where('list1_id',$newsubscriber->get('list_id'))->where('device_id',$newsubscriber->get('device_id'))->get();
if (!$result->isEmpty()) {
return "You are already a subscriber of this List";
}
else{
$result1 = Subscriber::where('device_id',$newsubscriber->get('device_id'))->get();
$subscriber = new Subscriber();
$subscriber->list1_id = $newsubscriber->get('list_id');
$subscriber->device_id = $newsubscriber->get('device_id');
$subscriber->subtype = 1;
$subscriber->save();

if (!$result1->isEmpty()) {
DB::connection('mongodb')->collection($subscriber->device_id)->push('subscriptions', array('list_id' => $subscriber->list1_id));
return "Subscribed successfully 1";
}
else{
DB::connection('mongodb')->collection($subscriber->device_id)->insert(array('_id' => $subscriber->device_id,'subscriptions' => array('list_id' => $subscriber->list1_id),

));

return "Subscribed successfully 2";
}

}
}

首先我使用了以下API

curl -H "Content-Type: application/json"-d '{"list_id":"2","device_id":"987654321"}' http://localhost/lemmeknw/public/index.php/api/v1/subscribe

这返回“订阅成功2”

但是当我第二次使用API​​时

curl -H "Content-Type: application/json"-d '{"list_id":"1","device_id":"987654321"}' http://localhost/lemmeknw/public/index.php/api/v1/subscribe

出现错误“出现问题”

最佳答案

我对 Laravel 不太了解,但我在这里看到的是:

DB::connection('mongodb')->collection('subscribers')->insert(array(
'_id' => $subscriber->device_id,
'subscriptions' => array('list_id' => $subscriber->list1_id),
));

看起来您正在创建subscriptions作为一个对象{list_id: <subscriber-list1_id>}而不是一个对象的数组 [{list_id: <subscriber-list1_id>}] 。因此,当您尝试使用push时操作

DB::connection('mongodb')->collection('subscribers')
->push('subscriptions', array('list_id' => $subscriber->list1_id));

这是一次尝试push到一个对象,而不是一个数组。我的猜测是您需要将插入内容修改为

DB::connection('mongodb')->collection('subscribers')->insert(array(
'_id' => $subscriber->device_id,
'subscriptions' => array(array('list_id' => $subscriber->list1_id)),
));

关于php - 如何使用 Laravel 4 将对象插入到 MongoDB 文档中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28247931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com