0

我有一个客户想要收集合作伙伴的报价,但他们需要批准更改。向合作伙伴保留变更历史的最佳方式是什么?

所以这是它的工作原理

{
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.
}


                 }


    }

?>
4

1 回答 1

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"
}
于 2012-08-28T07:02:07.433 回答