<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 類型轉換 對于前面的時間戳`birthday`的例子,還可以進行進一步的簡化,這里需要用到類型強制轉換的功能,在`User`模型類中添加定義: ``` <pre class="calibre18"> ``` <?php namespace app\index\model; use think\<span class="hljs-operator">Model</span>; <span class="hljs-operator"><span class="hljs-keyword">class</span> <span class="hljs-title">User</span> <span class="hljs-keyword"><span class="hljs-operator">extends</span></span> <span class="hljs-title">Model</span></span>{ <span class="hljs-keyword">protected</span> $dateFormat = <span class="hljs-operator">'Y</span>/m/d'; <span class="hljs-keyword">protected</span> $<span class="hljs-operator"><span class="hljs-keyword">type</span> =</span> [ <span class="hljs-comment">// 設置birthday為時間戳類型(整型)</span><span class="hljs-operator">'birthda</span>y' => <span class="hljs-operator">'timestam</span>p', ]; } ``` ``` 不需要定義任何修改器和讀取器,我們完成了相同的功能。 對于`timestamp`和`datetime`類型,如果不設置模型的`dateFormat`屬性,默認的日期顯示格式為:`Y-m-d H:i:s`,或者也可以顯示的設置日期格式,例如: ``` <pre class="calibre18"> ``` <?php namespace app\index\model; use think\<span class="hljs-operator">Model</span>; <span class="hljs-operator"><span class="hljs-keyword">class</span> <span class="hljs-title">User</span> <span class="hljs-keyword"><span class="hljs-operator">extends</span></span> <span class="hljs-title">Model</span></span>{ <span class="hljs-keyword">protected</span> $<span class="hljs-operator"><span class="hljs-keyword">type</span> =</span> [ <span class="hljs-comment">// 設置birthday為時間戳類型(整型)</span><span class="hljs-operator">'birthda</span>y' => <span class="hljs-operator">'timestamp</span>:<span class="hljs-operator">Y</span>/m/d', ]; } ``` ``` > ### 提示: > > - - - - - - > > 對于簡單的數據格式轉換之類的處理,設置類型轉換比定義修改器和讀取器更加方便。 `ThinkPHP5.0`支持的轉換類型包括: 類型 描述 integer 整型 float 浮點型 boolean 布爾型 array 數組 json JSON類型 object 對象 datetime 日期時間 timestamp 時間戳(整型) serialize 序列化## 自動時間戳 對于固定的時間戳和時間日期型的字段,比如文章的創建時間、修改時間等字段,還有比設置類型轉換更簡單的方法,尤其是所有的數據表統一處理的話,只需要在數據庫配置文件中添加設置: ``` <pre class="calibre18"> ``` <span class="hljs-comment">// 開啟自動寫入時間戳字段</span><span class="hljs-string">'auto_timestamp'</span> => <span class="hljs-keyword">true</span>, ``` ``` 再次訪問 ``` <pre class="calibre18"> ``` http://tp5.com/<span class="hljs-operator">user</span>/<span class="hljs-operator">add</span> ``` ``` 會發現系統已經自動寫入了`think_user`數據表中的的`create_time`、`update_time`字段,如果自動寫入的時間戳字段不是這兩個的話,需要修改模型類的屬性定義,例如: ``` <pre class="calibre18"> ``` <?php namespace app\index\model; use think\<span class="hljs-operator">Model</span>; <span class="hljs-operator"><span class="hljs-keyword">class</span> <span class="hljs-title">User</span> <span class="hljs-keyword"><span class="hljs-operator">extends</span></span> <span class="hljs-title">Model</span></span>{ <span class="hljs-comment">// 定義類型轉換</span><span class="hljs-keyword">protected</span> $<span class="hljs-operator"><span class="hljs-keyword">type</span> =</span> [ <span class="hljs-operator">'birthda</span>y' => <span class="hljs-operator">'timestamp</span>:<span class="hljs-operator">Y</span>/m/d', ]; <span class="hljs-comment">// 定義時間戳字段名</span><span class="hljs-keyword">protected</span> $createTime = <span class="hljs-operator">'create_a</span>t'; <span class="hljs-keyword">protected</span> $updateTime = <span class="hljs-operator">'update_a</span>t'; } ``` ``` 如果個別數據表不需要自動寫入時間戳字段的話,也可以在模型里面直接關閉: ``` <pre class="calibre18"> ``` <?php namespace app\index\model; use think\<span class="hljs-operator">Model</span>; <span class="hljs-operator"><span class="hljs-keyword">class</span> <span class="hljs-title">User</span> <span class="hljs-keyword"><span class="hljs-operator">extends</span></span> <span class="hljs-title">Model</span></span>{ <span class="hljs-comment">// 定義類型轉換</span><span class="hljs-keyword">protected</span> $<span class="hljs-operator"><span class="hljs-keyword">type</span> =</span> [ <span class="hljs-operator">'birthda</span>y' => <span class="hljs-operator">'timestamp</span>:<span class="hljs-operator">Y</span>/m/d', ]; <span class="hljs-comment">// 關閉自動寫入時間戳</span><span class="hljs-keyword">protected</span> $autoWriteTimestamp = <span class="hljs-number">false</span>; } ``` ``` 關閉自動寫入時間戳后,我們再次訪問URL地址: ``` <pre class="calibre18"> ``` http://tp5.com/<span class="hljs-operator">user</span>/<span class="hljs-operator">add</span> ``` ``` 重新生成的數據已經沒有自動寫入時間戳了,而是數據庫默認值寫入。 默認的時間戳字段類型是整型,如果需要使用其它的時間字段類型,可以做如下設置: ``` <pre class="calibre18"> ``` <?php namespace app\index\model; use think\<span class="hljs-operator">Model</span>; <span class="hljs-operator"><span class="hljs-keyword">class</span> <span class="hljs-title">User</span> <span class="hljs-keyword"><span class="hljs-operator">extends</span></span> <span class="hljs-title">Model</span></span>{ <span class="hljs-comment">// 定義類型轉換</span><span class="hljs-keyword">protected</span> $<span class="hljs-operator"><span class="hljs-keyword">type</span> =</span> [ <span class="hljs-operator">'birthda</span>y' => <span class="hljs-operator">'timestamp</span>:<span class="hljs-operator">Y</span>/m/d', ]; <span class="hljs-comment">// 指定自動寫入時間戳的類型為dateTime類型</span><span class="hljs-keyword">protected</span> $autoWriteTimestamp = <span class="hljs-operator">'datetim</span>e'; } ``` ``` 如果全局的自動時間戳的類型是統一的,也可以直接在數據庫配置文件中設置: ``` <pre class="calibre18"> ``` <span class="hljs-comment">// 開啟自動寫入時間戳字段</span><span class="hljs-string">'auto_timestamp'</span> => <span class="hljs-string">'datetime'</span>, ``` ``` > 如上設置后,你的`think_user`數據表中的`create_time`和 `update_time` 字段類型就必須更改為`datetime`類型的格式。 支持設置的時間戳類型包含:`datetime`、`date`和`timestamp`。 ## 自動完成 系統已經自動寫入了`think_user`數據表中的的`create_time`、`update_time`字段,如果我們希望自動寫入其它的字段,則可以使用自動完成功能,例如下面實現新增的時候自動寫入`status`字段。 ``` <pre class="calibre18"> ``` <?php namespace app\index\model; use think\<span class="hljs-operator">Model</span>; <span class="hljs-operator"><span class="hljs-keyword">class</span> <span class="hljs-title">User</span> <span class="hljs-keyword"><span class="hljs-operator">extends</span></span> <span class="hljs-title">Model</span></span>{ <span class="hljs-comment">// 定義類型轉換</span><span class="hljs-keyword">protected</span> $<span class="hljs-operator"><span class="hljs-keyword">type</span> =</span> [ <span class="hljs-operator">'birthda</span>y' => <span class="hljs-operator">'timestamp</span>:<span class="hljs-operator">Y</span>/m/d', ]; <span class="hljs-comment">// 定義自動完成的屬性</span><span class="hljs-keyword">protected</span> $insert = [<span class="hljs-operator">'statu</span>s' => <span class="hljs-number">1</span>]; } ``` ``` 除了`insert`屬性之外,自動完成共有三個屬性定義,分別是: 屬性 描述 auto 新增及更新的時候自動完成的屬性數組 insert 僅新增的時候自動完成的屬性數組 update 僅更新的時候自動完成的屬性數組自動完成屬性里面一般來說僅僅需要定義屬性的名稱,然后配合修改器或者類型轉換來一起完成,如果寫入的是一個固定的值,就無需使用修改器。`status`屬性的自動寫入可以直接使用: ``` <pre class="calibre18"> ``` <span class="hljs-string">'status'</span> => <span class="hljs-number">1</span> ``` ``` 完成后,我們訪問URL地址: ``` <pre class="calibre18"> ``` http://tp5.com/<span class="hljs-operator">user</span>/<span class="hljs-operator">add</span> ``` ``` 最后的輸出結果為: ``` <pre class="calibre18"> ``` 用戶<span class="hljs-operator">[ 流年:12 ]</span>新增成功 ``` ``` 為了便于看到效果,我們修改控制器的`read`操作方法輸出更多的屬性: ``` <pre class="calibre18"> ``` <span class="hljs-comment">// 讀取用戶數據</span><span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">read</span><span class="hljs-number">(<span class="hljs-regexp">$id</span>=<span class="hljs-string">''</span>)</span></span>{ <span class="hljs-regexp">$user</span> = UserModel::get(<span class="hljs-regexp">$id</span>); <span class="hljs-keyword">echo</span> <span class="hljs-regexp">$user</span>->nickname . <span class="hljs-string">'<br/>'</span>; <span class="hljs-keyword">echo</span> <span class="hljs-regexp">$user</span>->email . <span class="hljs-string">'<br/>'</span>; <span class="hljs-keyword">echo</span> <span class="hljs-regexp">$user</span>->birthday . <span class="hljs-string">'<br/>'</span>; <span class="hljs-keyword">echo</span> <span class="hljs-regexp">$user</span>->status . <span class="hljs-string">'<br/>'</span>; <span class="hljs-keyword">echo</span> <span class="hljs-regexp">$user</span>->create_time . <span class="hljs-string">'<br/>'</span>; <span class="hljs-keyword">echo</span> <span class="hljs-regexp">$user</span>->update_time . <span class="hljs-string">'<br/>'</span>; } ``` ``` 然后,訪問URL地址: ``` <pre class="calibre18"> ``` <span class="hljs-string">http:</span> <span class="hljs-comment">//tp5.com/user/12</span> ``` ``` 最后的輸出結果為: ``` <pre class="calibre18"> ``` 流年 thinkphp@qq.com <span class="hljs-number">1977</span>/<span class="hljs-number">03</span>/<span class="hljs-number">05</span><span class="hljs-number">1</span><span class="hljs-number">2016</span>-<span class="hljs-number">05</span>-<span class="hljs-number">02</span> <span class="hljs-number">16</span>:<span class="hljs-number">21</span>:<span class="hljs-number">33</span><span class="hljs-number">2016</span>-<span class="hljs-number">05</span>-<span class="hljs-number">02</span> <span class="hljs-number">16</span>:<span class="hljs-number">21</span>:<span class="hljs-number">33</span> ``` ``` 可以看到`status`、`create_time`和`update_time`都實現了自動寫入。 如果你的`status`屬性的值不是固定的,而是需要條件判斷,那么我們可以定義修改器來配合自動完成。 ``` <pre class="calibre18"> ``` <span class="hljs-operator"><span class="hljs-number"><?php</span><span class="hljs-keyword">namespace</span> <span class="hljs-title">app</span>\<span class="hljs-title">index</span>\<span class="hljs-title">model</span>; <span class="hljs-keyword">use</span> <span class="hljs-title">think</span>\<span class="hljs-title">Model</span>; <span class="hljs-operator"><span class="hljs-keyword">class</span> <span class="hljs-title">User</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">Model</span></span>{ <span class="hljs-comment">// 定義類型轉換</span><span class="hljs-keyword">protected</span> <span class="hljs-regexp">$type</span> = [ <span class="hljs-string">'birthday'</span> => <span class="hljs-string">'timestamp:Y/m/d'</span>, ]; <span class="hljs-comment">// 定義自動完成的屬性</span><span class="hljs-keyword">protected</span> <span class="hljs-regexp">$insert</span> = [<span class="hljs-string">'status'</span>]; <span class="hljs-comment">// status屬性修改器</span><span class="hljs-keyword">protected</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">setStatusAttr</span><span class="hljs-number">(<span class="hljs-regexp">$value</span>, <span class="hljs-regexp">$data</span>)</span></span>{ <span class="hljs-keyword">return</span> <span class="hljs-string">'流年'</span> == <span class="hljs-regexp">$data</span>[<span class="hljs-string">'nickname'</span>] ? <span class="hljs-number">1</span> : <span class="hljs-number">2</span>; } <span class="hljs-comment">// status屬性讀取器</span><span class="hljs-keyword">protected</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">getStatusAttr</span><span class="hljs-number">(<span class="hljs-regexp">$value</span>)</span></span>{ <span class="hljs-regexp">$status</span> = [-<span class="hljs-number">1</span> => <span class="hljs-string">'刪除'</span>, <span class="hljs-number">0</span> => <span class="hljs-string">'禁用'</span>, <span class="hljs-number">1</span> => <span class="hljs-string">'正常'</span>, <span class="hljs-number">2</span> => <span class="hljs-string">'待審核'</span>]; <span class="hljs-keyword">return</span> <span class="hljs-regexp">$status</span>[<span class="hljs-regexp">$value</span>]; } }</span> ``` ``` 我們訪問下面的URL地址進行批量新增 ``` <pre class="calibre18"> ``` <span class="hljs-string">http:</span> <span class="hljs-comment">//tp5.com/user/add_list</span> ``` ``` 之后,訪問 ``` <pre class="calibre18"> ``` <span class="hljs-string">http:</span> <span class="hljs-comment">//tp5.com/user/18</span> ``` ``` 最后的輸出結果為: ``` <pre class="calibre42"> ``` 張三 zhanghsan@qq.com <span class="hljs-number">1988</span>/<span class="hljs-number">01</span>/<span class="hljs-number">15</span> 待審核 <span class="hljs-number">2016</span>-<span class="hljs-number">05</span>-<span class="hljs-number">02</span> <span class="hljs-number">16</span>:<span class="hljs-number">40</span>:<span class="hljs-number">57</span><span class="hljs-number">2016</span>-<span class="hljs-number">05</span>-<span class="hljs-number">02</span> <span class="hljs-number">16</span>:<span class="hljs-number">40</span>:<span class="hljs-number">57</span> ``` ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看