Laravel - 模型默认值

时间:2015-10-03 11:24:13

标签: laravel laravel-4 model laravel-5 query-builder

我有一张类似的表 -

http://i.stack.imgur.com/xFHSP.png

它的模型是这样的 -

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\Request;

class WebinarLiveAttenders extends Model
{
    protected $table = 'webinar_live_attenders';
    protected $primaryKey='id';
    protected $fillable = array('webinar_id','ip','last_update');
    public $timestamps=false;

    public function webinars()
    {
        return $this->hasOne('App\Webinar');
    }
}

我正在运行这样的查询 -

public function post_update_user_status()
{
    //Request::getClientIp();
    $requestData = Request::all();
    $date = new DateTime;
    $formatted_date = $date->format('Y-m-d H:i:s');

    $user_status = WebinarLiveAttenders::firstOrNew([
                                                        'webinar_id' => $requestData['uuid'],
                                                        'ip'         => Request::getClientIp()
                                                    ]);
    $user_status->last_update = $formatted_date;
    $user_status->save();
    return 'Done';
}

问题是我总是 time_on = 0。

但我希望它是创作的时间。

我不能在这里使用时间戳。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

首先,您需要将time_on放入

protected $fillable = array('webinar_id','ip','last_update', 'time_on');

我建议您将created_at updated_atdeleted_at字段用于softDelete()

就像,Laravel会知道你在说什么,并为你简化。

它应该是:

protected $fillable = array('webinar_id','ip','created_at' 'updated_at', 'deleted_at');

在未来的webapps中记住这一点。

答案 1 :(得分:0)

您需要将time_on显式设置为格式化日期。 您可以检查$user_status->exists是否存在数据库。

if(!$user_status_>exists) {
  // First creation of user_status, so lets set a creation_date
  $user_status->time_on = $formatted_date;
}
$user_status->last_updated = $formatted_date;
$user->save();