首页 > 解决方案 > Laravel 设置带有今天日期的模型表名称

问题描述

我在我的 laravel 应用程序中有一个模型,它使用一个每天重新创建的表,其中包含一个包含今天日期的新表名。

我正在尝试将protected $table模型中的属性设置为

protected $table = "probe_request_" . $this->getDate;

这就是我定义getDate函数的方式

private function getDate()
{
    return Carbon::now('Europe/London')->startOfDay()->format('d_m_Y');
}

我不断收到以下错误"<strong>Zend compile error</strong>: Constant expression contains invalid operations in <strong>/var/www/intelli_sense/app/sprinkles/geo-sense/src/Database/Models/ProbeRequest.php</strong> on line <strong>23</strong>"

有没有办法可以在其中设置带有今天日期的表名?我觉得必须有一个简单的方法来做到这一点,我错过了。

标签: laraveleloquent

解决方案


创建字段值时不能使用表达式,但可以在模型构造函数中覆盖它:

public function __construct(array $attributes = [])
{
    $this->table = "probe_request_" . Carbon::now('Europe/London')->startOfDay()->format('d_m_Y');
    parent::__construct($attributes);
}

推荐阅读