我有一个客户想要收集合作伙伴的优惠,但他们需要批准更改。什么是保持合作伙伴变更历史的最佳方式?
所以这是它的工作原理
{
partner_id: {here}
offer1:
offer2:
offer3:
date:
status:
}
我需要一种方法来检查是否有任何优惠改变(但只有1回),如果更改了插入并将过去的优惠改为状态:历史记录
应该只有以下状态:
历史
未决
批准
但是如果他们正在插入新的优惠但是有一个已批准的优惠,那么在我们批准之前它需要保持批准状态。
我该怎么做?这就是我的想法:
<?php
function checkoffers($data)
{
$this->data = $data;
$collection = $this->db->partner_offers;
if($this->data["_id"] != null)
{
$cursor = $collection->insert(RUN INSERT ARRAY)
}
else
{
$cursor = $collection->find(array("_id"=>new MongoId($this->data["_id"])));
if ($cursor->count() > 0)
{
$test = array();
while( $cursor->hasNext() ) {
$test[] = ($cursor->getNext());
}
foreach($test as $offers)
{
check to see if offer matches the past offer. if not then run new function and insert.
}
}
}
?>
答案 0 :(得分:0)
一种方法是使用每个要约的文档组织您的架构:
{
partner_id: 123,
offer: 'Even better than the last one',
date: ISODate("2012-08-28T10:00"),
status: 'pending'
}
{
partner_id: 123,
offer: 'The best of the best',
date: ISODate("2012-08-28T09:00"),
status: 'approved'
}
{
partner_id: 123,
offer: 'An offer you cannot refuse',
date: ISODate("2012-08-28T08:00"),
status: 'approved'
}
然后,您可以轻松找到按状态和日期排序的最新批准或待处理商品:
> db.partner.find({partner_id:123, status:'approved'}).sort({date:-1}).limit(1)
{
"_id" : ObjectId("503c6c8be16d4a06b6f0da17"),
"partner_id" : 123,
"offer" : "The best of the best",
"date" : ISODate("2012-08-28T09:00:00Z"),
"status" : "approved"
}