2015-09-10 98 views
0

我實現了一個名爲schedules的表,它有一個名爲day的字段。
日期爲tinyInteger數據類型,表示星期六或星期三的星期幾。
至於獲取查詢和呈現到視圖如何將tinyInt轉換爲代表String
另外我擔心MVC體系結構代表一天的字符串與視圖有關,而不是模型本身,所以對於創建輔助類並將整數轉換爲字符串有什麼看法?Laravel將整數映射到字符串

回答

2

我會做在一個訪問:

http://laravel.com/docs/5.1/eloquent-mutators#accessors-and-mutators

因此,也許這樣的事情在你Schedules型號:

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

    return null; 
} 

注意這是假定你的整數是0和6之間,和0是星期一。

查看jddayofweek瞭解詳情。

所以,現在當您撥打$schedule->day時,您將收到一個字符串,如Monday

另外,如果你不想覆蓋day屬性完全這樣,你可以僞屬性添加到您的模型:

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; 
} 

現在你可以使用$schedule->day獲得整數值,或$schedule->day_name獲取字符串。

+0

+1也取決於你經常需要這個屬性的方式。如果您有100個控制器,並且只使用一次,則使用存儲庫方法,反之亦然。 – ajameswolf

+0

@jszobody這種方法如何提供多語言支持? – Mehrdad

+0

@Mehrdad我有很多方法可以考慮這樣做,但我的直覺就是不去處理模型中的那個部分。讓模型以默認語言返回一個日期字符串(假設英語在這裏),然後在顯示視圖時使用Laravel的本地化功能翻譯日期字符串。無論如何,這是我的第一個想法。 – jszobody