Laravel - 模型默认值

Posted

技术标签:

【中文标题】Laravel - 模型默认值【英文标题】:Laravel - Model Default value 【发布时间】:2015-12-31 12:54:15 【问题描述】:

我有一张这样的桌子-

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。

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

我不能在这里使用时间戳

有人可以帮忙吗?

【问题讨论】:

为什么不能使用时间戳? 【参考方案1】:

首先你需要输入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');

在未来的 web 应用中记住这一点。

【讨论】:

【参考方案2】:

您需要将time_on 显式设置为格式化日期。 您可以检查$user_status-&gt;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();

【讨论】:

以上是关于Laravel - 模型默认值的主要内容,如果未能解决你的问题,请参考以下文章

如何为 Laravel / Eloquent 模型设置默认属性值?

Laravel 迁移默认值

错误字段在 laravel 5.3 中没有默认值

Laravel 保护列免受不可为空/默认值的批量分配

为 Laravel 表单字段定义默认值

Laravel Form-Model Binding 多选默认值