Laravel将整数映射到字符串

Laravel将整数映射到字符串,laravel,model-view-controller,mapping,Laravel,Model View Controller,Mapping,我实现了一个名为schedules的表,它有一个名为day的字段 day是tinyInteger数据类型,表示一周中的某一天,如周六或周三。 在获取查询并向视图演示时,如何将tinyInt转换为具有代表性的String? 此外,我还担心MVC体系结构,因为表示一天的字符串与视图相关,而与模型本身无关,那么您对创建帮助器类并将整数转换为字符串有何看法?我会在访问器中执行此操作: 因此,在您的计划中可能会出现类似的情况: public function getDayAttribute($day)

我实现了一个名为
schedules
的表,它有一个名为
day
的字段
day是
tinyInteger
数据类型,表示一周中的某一天,如周六或周三。
在获取查询并向视图演示时,如何将
tinyInt
转换为具有代表性的
String


此外,我还担心MVC体系结构,因为表示一天的字符串与视图相关,而与模型本身无关,那么您对创建帮助器类并将整数转换为字符串有何看法?

我会在访问器中执行此操作:

因此,在您的
计划中可能会出现类似的情况:

public function getDayAttribute($day)
{
    // Assuming your integer value is between 0 and 6
    if($day >= 0 && $day <= 6) {
        return jddayofweek($day, 1);
    }

    return null;
}

现在,您可以使用
$schedule->day
获取整数值,或者使用
$schedule->day\u name
获取字符串。

我建议您查看此库: 它通过composer安装了700多万次

基本上,它将为您提供大量DateTime内置类通常不提供的翻译实用程序

Laravel方法是在需要“解释”模型数据的任何位置向控制器中注入存储库。

+1同样,这取决于您需要该属性的“频率”。如果您有100个控制器,并且只使用一次,请使用repository方法,反之亦然。@jszobody使用此方法如何提供多语言支持?@Mehrdad我可以考虑多种方法,但我的直觉是不处理模型中的该部分。让模型以默认语言返回一个日期字符串(此处假设为英语),然后在稍后显示视图时,使用Laravel的本地化功能转换日期字符串。这是我的第一个想法。@jszobody你对保持模型和
day
的原样有什么看法,并且有一个助手类,它的一个方法将
day
整数映射为字符串?@Mehrdad我可以看出它在类似Transformer模式的情况下工作得很好。例如,使用类似的东西。我在一个更大更复杂的应用程序中这样做,我需要修改各种输出。另一方面,我不会只为这一个领域走这条路。有说服力的访问者正是出于这个原因,对于简单的用例。这取决于你的应用程序的复杂性以及输出需要转换哪些其他数据。
protected $appends = ['day_name'];

public function getDayNameAttribute()
{
    // Assuming your integer value is between 0 and 6
    if($this->day >= 0 && $this->day <= 6) {
        return jddayofweek($this->day, 1);
    }

    return null;
}