【问题标题】:Adding seconds with Carbon用碳增加秒数
【发布时间】:2019-04-14 18:59:56
【问题描述】:

我的想法是我需要通过这个模型从拍卖中获取 end_date,它位于数据库内部,采用 MySQL 时间戳格式(我使用 phpmyadmin,如果重要,例如 2018-11-14 04:58:07 )。因此,当我得到 end_date 时,想法是通过 Carbon addSeconds() 函数将其增加几秒(例如 10 秒),然后将其再次写入数据库。这是完成它的控制器和我的拍卖模型。 发生的事情是我得到 FatalThrowableError 'Call to a member function addSeconds() on integer'。我玩了很多次,似乎找不到 secs2 变量的正确格式。

Auction.php

public $id;
public $name;
public $descript;
public $price;
public $pic;
public $end_date;
public $offers;
public $offered_by;

    public function get(){
    $result =
        DB::table('auctions')
            ->select('*')
            ->where('id', '=', $this->id)
            ->first();
    return $result;
}

    public function increment($id){
    $result =
        DB::table('auctions')
            ->where('id', $id)
            ->update([
                'offers' => DB::raw('offers + 1'),
                'end_date' => $this->end_date
            ]);
    return $result;
}

AuctionController.php

    public function offer($id, Request $request){
    $auction = new Auction();
    $auction->id = $id;

    $secs = $auction->get()->end_date;
    $secs2 = strtotime($secs);
    $secs2->addSeconds(120);

    $auction->end_date = $secs2;
    //dd($secs2);

    $auction->increment($id);
}

【问题讨论】:

    标签: php laravel date timestamp


    【解决方案1】:

    如果你想使用addSeconds方法,你不能先把你的时间转换成数字.. 例如:

    Carbon::parse($auction->get()->end_date)
          ->addSeconds(120)
          ->format('H:i:s');
    

    【讨论】:

    • 这是一个提议的解决方案吗?当我尝试你的版本时,我得到'调用字符串上的成员函数 addSeconds()'
    • 你能打印出Carbon::parse($auction->get()->end_date)的结果吗?
    • 这是转储结果:Carbon @1542171487 {#199 ▼ 日期:2018-11-14 04:58:07.0 UTC (+00:00) }
    • 显然这使它以正确的方式增加了秒数。
    • 谢谢。 Carbon::parse($auction->get()->end_date)->addSecond(120) 是解决方案。现在可以了。
    猜你喜欢
    • 2018-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多