<font id="zqva1"></font>
<rt id="zqva1"></rt>
  • <tt id="zqva1"></tt>
    <cite id="zqva1"></cite>

    <cite id="zqva1"><noscript id="zqva1"></noscript></cite>
      <rp id="zqva1"><meter id="zqva1"></meter></rp>

        <cite id="zqva1"></cite>
          <b id="zqva1"></b>
          <rp id="zqva1"></rp>
          <cite id="zqva1"></cite>

          <rt id="zqva1"></rt>

        1. <rp id="zqva1"></rp>

          分享 8 個 Laravel 模型時間戳使用技巧

          時間:?2020-02-26閱讀:?53標簽:?Laravel

          默認情況下,Laravel Eloquent 模型默認數據表有 created_at 和 updated_at 兩個字段。當然,我們可以做很多自定義配置,實現很多有趣的功能。下面舉例說明。


          1.禁用時間戳

          如果數據表沒有這兩個字段,保存數據時 Model::create($arrayOfValues); ——會看到 SQL error。Laravel 在自動填充 created_at / updated_at 的時候,無法找到這兩個字段。

          禁用自動填充時間戳,只需要在 Eloquent Model 添加上一個屬性:

          class Role extends Model
          {
              public $timestamps = FALSE;
          
              // ... 其他的屬性和方法
          }


          2. 修改時間戳默認列表

          假如當前使用的是非 Laravel 類型的數據庫,也就是你的時間戳列的命名方式與此不同該怎么辦? 也許,它們分別叫做 create_time 和 update_time。恭喜,你也可以在模型種這么定義:

          class Role extends Model
          {
              const CREATED_AT = 'create_time';
              const UPDATED_AT = 'update_time'; 


          3. 修改時間戳日期/時間格式

          以下內容引用官網文檔 official Laravel documentation:

          默認情況下,時間戳自動格式為 'Y-m-d H:i:s'。 如果您需要自定義時間戳格式, 可以在你的模型中設置 $dateFormat屬性。這個屬性確定日期在數據庫中的存儲格式,以及在序列化成數組或JSON時的格式:

          class Flight extends Model
          {
              /**
               * 日期時間的存儲格式
               *
               * @var string
               */
              protected $dateFormat = 'U';
          }


          4. 多對多: 帶時間戳的中間表

          當在多對多的關聯中,時間戳不會自動填充,例如 用戶表  users 和 角色表roles的中間表role_user

          在這個模型中您可以這樣定義關系:

          class User extends Model
          {
              public function roles()
              {
                  return $this->belongsToMany(Role::class);
              }
          }

          然后當你想用戶中添加角色時,可以這樣使用:

          $roleID = 1;
          $user->roles()->attach($roleID);

          默認情況下,這個中間表不包含時間戳。并且Laravel不會嘗試自動填充created_at/updated_at

          但是如果你想自動保存時間戳,您需要在遷移文件中添加created_at/updated_at,然后在模型的關聯中加上->withTimestamps();

          public function roles()
          {
              return $this->belongsToMany(Role::class)->withTimestamps();
          }


          5. 使用latest()和oldest()進行時間戳排序

          使用時間戳排序有兩個 “快捷方法”。

          取而代之:

          User::orderBy('created_at', 'desc')->get();

          這么做更快捷:

          User::latest()->get();

          默認情況,latest() 使用 created_at 排序。

          與之對應,有一個 oldest() ,將會這么排序 created_at ascending

          User::oldest()->get();

          當然,也可以使用指定的其他字段排序。例如,如果想要使用 updated_at,可以這么做:

          $lastUpdatedUser = User::latest('updated_at')->first();


          6. 不觸發 updated_at的修改

          無論何時,當修改 Eloquent 記錄,都將會自動使用當前時間戳來維護 updated_at 字段,這是個非常棒的特性。

          但是有時候你卻不想這么做,例如:當增加某個值,認為這不是 “整行更新”。

          那么,你可以一切如上—— 只需禁用 timestamps,記住這是臨時的:

          $user = User::find(1);
          $user->profile_views_count = 123;
          $user->timestamps = false;
          $user->save();


          7. 僅更新時間戳和關聯時間戳

          與上一個例子恰好相反,也許您需要僅更新updated_at字段,而不改變其他列。

          所以,不建議下面這種寫法:

          $user->update(['updated_at' => now()]);

          您可以使用更快捷的方法:

          $user->touch();

          另一種情況,有時候您不僅希望更新當前模型的updated_at,也希望更新上級關系的記錄。

          例如,某個comment被更新,那么您希望將post表的updated_at也更新。

          那么,您需要在模型中定義$touches屬性:

          class Comment extends Model {
          
              protected $touches = ['post'];
          
              public function post()
              {
                  return $this->belongsTo('Post');
              }
          
          }


          8. 時間戳字段自動轉換Carbon類

          最后一個技巧,但更像是一個提醒,因為您應該已經知道它。

          默認情況下,created_atupdated_at字段被自動轉換為$dates
          所以您不需要將他們轉換為Carbon實例,即可以使用Carbon的方法。

          例如:

          $user->created_at->addDays(3);
          now()->diffInDays($user->updated_at);

          就這樣,快速但希望有用的提示!

          原文鏈接:https://learnku.com/laravel/
          討論請前往專業的 Laravel 開發者論壇:https://learnku.com/Laravel
          吐血推薦

          1.站長廣告聯盟: 整理了目前主流的廣告聯盟平臺,如果你有流量,可以作為參考選擇適合你的平臺點擊進入...

          2.休閑娛樂: 直播/交友    優惠券領取   網頁游戲   H5游戲

          鏈接: http://www.modern-decoration.com.cn/article/detial/7787

          Laravel 如何優雅地實現輸出結構統一的功能?

          一般的項目需求都會要求統一的輸出結構,特別是對于api應用而言。因此,如果有beforeResponse的功能,則可以在數據輸出之前對response進行統一格式化處理。假設這么一種場景

          Laravel 軟刪除存在的問題

          軟刪除使用的標記類型是時間類型,通過is null條件查詢,刪除標記取值不支持定義;軟刪除trait使用之后,不會對字段是否存在進行校驗。對應已經存在的表,有些表存在軟刪除,有些表不存在軟刪除字段,如果要應用軟刪除

          Composer,laravel下載和更新

          有兩種方式啟用本鏡像服務:系統全局配置: 即將配置信息添加到 Composer 的全局配置文件 config.json 中。單個項目配置: 將配置信息添加到某個項目的composer.json 文件中。

          Laravel 向公共模板賦值

          開發過程中許多時候都會向公共模板賦值,比如頂部導航欄,頁面底部等等,不可能在每個控制器中都賦值一遍。Laravel 中解決辦法如下:

          十個推薦使用的 Laravel 的輔助函數

          Laravel 包含各種全局輔助函數。 laravel 中包含大量輔助函數,您可以使用它們來簡化開發工作流程。 在這里,我將編寫10個最好的 laravel 幫助函數,用于使我的開發更容易。 您必須考慮在必要時使用它們。

          十五個常用的 Laravel 集合(Collection)

          Laravel Eloquent 通常返回一個集合作為結果,集合包含很多有用的、功能強大的方法。你可以很方便的對集合進行過濾、修改等操作。本次教程就一起來看一看集合的常用方法及功能。

          Laravel 中創建 Zip 壓縮文件并提供下載

          如果您需要您的用戶支持多文件下載的話,最好的辦法是創建一個壓縮包并提供下載。看下在 Laravel 中的實現。事實上,這不是關于 Laravel 的,而是和 PHP 的關聯更

          laravel常用路徑保存

          laravel框架常用目錄路徑:app_path(),app_path函數返回app目錄的絕對路徑:$path = app_path();你還可以使用app_path函數為相對于app目錄的給定文件生成絕對路徑:$path = app_path(\'Http/Controllers/Controller.php\');

          Laravel中集成PayPal

          最近在寫一個面向國外買家的一個商城項目,既然面向國外,那就要用到PayPal這個支付平臺。因為在對接PayPal的過程中遇到了一些問題,花費了一些時間,所以把對接的過程記下來,也希望能幫助到用到PayPal的朋友。我集成的是paypal/rest-api-sdk-php。

          Laravel中9個不經常用的小技巧

          更新父表的timestamps:如果你想在更新關聯表的同時,更新父表的timestamps,你只需要在關聯表的model中添加touches屬性。

          fly63.com版權所有,內容以共享、參考、研究為目的,不存在任何商業目的。其版權屬原作者所有,如有侵權,請與小編聯系!情況屬實本人將予以刪除!

          文章投稿關于web前端網站點搜索站長推薦網站地圖站長QQ:522607023

          小程序專欄: 土味情話心理測試腦筋急轉彎幽默笑話段子句子語錄成語大全

          国产精品高清视频免费 - 视频 - 在线观看 - 影视资讯 - 唯爱网