Laravel 设置带有今天日期的模型表名称

Posted

技术标签:

【中文标题】Laravel 设置带有今天日期的模型表名称【英文标题】:Laravel Set Model Table Name With Todays Date 【发布时间】:2021-01-30 23:10:52 【问题描述】:

我的 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>"

有没有一种方法可以设置包含今天日期的表名?我觉得必须有一种我错过的简单方法来做到这一点。

【问题讨论】:

【参考方案1】:

你可以这样设置新的表名。

$ProbeRequest= new ProbeRequest;
$ProbeRequest->setTable("probe_request_" . $this->getDate);

【讨论】:

【参考方案2】:

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

public function __construct(array $attributes = [])

    $this->table = "probe_request_" . Carbon::now('Europe/London')->startOfDay()->format('d_m_Y');
    parent::__construct($attributes);

【讨论】:

以上是关于Laravel 设置带有今天日期的模型表名称的主要内容,如果未能解决你的问题,请参考以下文章

laravel 使用 in 子句模型名称连接多态数据透视表

laravel 模型 - 如何在模型中动态设置列值?

我如何从表 laravel 模型中获取数据

如何将今天的日期excel表自动导入SSIS [重复]

求和列的 Laravel 多重关系

如何获取已存储在另一个模型中的名称 ID,并使用名称 ID 在 laravel 的数据透视表数据库中存储值?