亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

Laravel框架使用Seeder實現自動填充數據功能

2024-05-05 00:04:08
字體:
來源:轉載
供稿:網友

本文實例講述了Laravel框架使用Seeder實現自動填充數據功能。分享給大家供大家參考,具體如下:

要查看代碼,可以點擊鏈接:https://github.com/laravel/framework

Laravel自動填充數據使用的是Seeder類

<?phpuse Illuminate/Database/Seeder;use Illuminate/Database/Eloquent/Model;class DatabaseSeeder extends Seeder{  /**   * Run the database seeds.   */  public function run()  {    //  }}class MyTableSeeder extends Seeder{  public function run()  {    //  }}

你自定義的Seeder只有一個run函數,里面寫你的自動填充步驟

大家會注意到這兩個函數

Model::unguard();//你的填充操作Model::reguard();

曾經對這兩個函數非常疑惑,到底是干什么用的,只能推測是一對互為反作用的函數。于是去查了下源代碼。

在目錄/vendor/laravel/framework/src/Illuminate/Database/Eloquent下的Model.php下定義了這兩個函數

/*** Disable all mass assignable restrictions.** @param bool $state* @return void*/public static function unguard($state = true){    static::$unguarded = $state;}/*** Enable the mass assignment restrictions.** @return void*/public static function reguard(){    static::$unguarded = false;}

看Laravel作者的注釋可以知道,是對數據填充限制的操作。

所以unguard在前,reguard在后,unguard負責解除自動填充操作限制,reguard負責恢復限制。

在填充操作之前,建議使用模型的成員函數  

Model::truncate();

這個函數會清空這個模型所對應的數據表,所以請慎重使用。

<?phpuse Illuminate/Database/Seeder;use Illuminate/Database/Eloquent/Model;class DatabaseSeeder extends Seeder{  /**   * Run the database seeds.   */  public function run()  {    Model::unguard();    $this->call('PostTableSeeder');    Model::reguard();  }}class PostTableSeeder extends Seeder{  public function run()  {    App/Post::truncate();    factory(App/Post::class, 1000)->create();  }}

這里有讀者會問:為什么我們不把填充操作都寫在自帶的DatabaseSeeder的run函數里呢?

因為我們開發一個完整的系統時,可能要填充的數據表有很多張,不希望每次都要大量修改這個run函數。我們還希望每次填充都能保留下這個填充的過程,所以我們寧愿新寫一個類,然后用$this->call()函數來調用。

接下來我們來談談factory。

文件目錄/database/factories/ModelFactory.php

$factory->define(App/Post::class, function ($faker) {  return [    'title' => $faker->sentence(mt_rand(3, 10)),    'content' => join("/n/n", $faker->paragraphs(mt_rand(3, 6))),    'published_at' => $faker->dateTimeBetween('-1 month', '+3 days'),  ];});

雖然能看懂,但是不知道這個$factory變量是什么?因此去查Factory類找。

在目錄/vendor/laravel/framework/src/Illuminate/Database/Eloquent的Factory.php找到源代碼

/*** Define a class with a given set of attributes.** @param string $class* @param callable $attributes* @param string $name* @return void*/public function define($class, callable $attributes, $name = 'default'){    $this->definitions[$class][$name] = $attributes;}
/*** Create an instance of the given model and persist it to the database.** @param string $class* @param array $attributes* @return mixed*/public function create($class, array $attributes = []){    return $this->of($class)->create($attributes);}

開始填充數據,我們還是使用artisan命令行

php artisan db:seed

這個命令會執行你寫在DatabaseSeeder.php里面所有的類的run函數,如果以后項目復雜了,沒有必要執行已經執行過的,所以在命令行后面加參數,只要執行某個類的run函數即可

php artisan db:seed --class=你要執行的類名稱

希望本文所述對大家基于Laravel框架的PHP程序設計有所幫助。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲电影免费观看高清完整版| 成人综合网网址| 亚洲日本欧美中文幕| 亚洲国产中文字幕久久网| 97精品视频在线| 精品久久久久久久大神国产| 亚洲无亚洲人成网站77777| 国产精品户外野外| 欧美在线播放视频| 亚洲激情久久久| 亚洲精品短视频| 欧美有码在线观看视频| 国产精品一区二区在线| 亚洲国产精品热久久| 亚洲sss综合天堂久久| 国产一区二区精品丝袜| 久久久99久久精品女同性| 深夜福利国产精品| 成人日韩在线电影| 久久久人成影片一区二区三区| 成人在线播放av| 国产精品久久久久高潮| 国产精品女主播| www.欧美三级电影.com| 欧美激情欧美狂野欧美精品| 波霸ol色综合久久| 91高清视频在线免费观看| 91精品国产色综合| 日韩精品极品在线观看播放免费视频| 国产成人av在线播放| 91精品视频在线看| 欧美激情第一页xxx| 欧美一区亚洲一区| 久久影院模特热| 日韩av在线电影网| 色av中文字幕一区| 亚洲精品suv精品一区二区| 国产精品精品视频一区二区三区| 午夜精品久久久久久久久久久久| 国产精品美女主播在线观看纯欲| 国产国产精品人在线视| 国产精品69久久| 久久精品在线视频| 日韩男女性生活视频| 久久成人精品视频| 日韩电影免费观看在线| 国产视频自拍一区| 国产一区二区激情| 国语自产精品视频在线看一大j8| 国产亚洲精品一区二区| 国产精品久久久久久久久久小说| 中文字幕亚洲在线| 伊人激情综合网| 午夜精品久久久久久久99热| 国产97人人超碰caoprom| 欧美丝袜美女中出在线| 日本精品一区二区三区在线播放视频| 国产一区二区欧美日韩| 国内外成人免费激情在线视频| 成人黄色免费看| 欧美日韩在线观看视频| 国产午夜精品全部视频在线播放| 欧美乱大交xxxxx另类电影| 亚洲精品小视频在线观看| 国产午夜精品免费一区二区三区| 中文字幕av一区二区三区谷原希美| 亚洲第一福利网站| 国产精品爽爽爽爽爽爽在线观看| 亚洲伦理中文字幕| 亚洲国产欧美一区二区三区同亚洲| 欧美成人一二三| 久久精品视频导航| 一区二区三区四区在线观看视频| 91网站免费观看| 2019中文字幕在线免费观看| 一区二区三区视频免费在线观看| 久久久久国产精品免费网站| 国产视频在线观看一区二区| 日韩有码在线播放| 久久精品99久久久久久久久| 欧美日韩在线视频首页| 中文字幕国产亚洲2019| 亚洲男人的天堂在线播放| 一区二区三区美女xx视频| 国外色69视频在线观看| 国产亚洲精品久久久| 日韩亚洲国产中文字幕| 黑人巨大精品欧美一区二区| 日韩欧美a级成人黄色| 国语自产在线不卡| 亚洲黄色免费三级| 亚洲精品色婷婷福利天堂| 日韩a**中文字幕| 久久天天躁狠狠躁老女人| 亚洲精品xxx| 国产福利精品在线| 91精品国产高清自在线看超| 久久夜色精品国产| 日韩经典中文字幕| 日韩va亚洲va欧洲va国产| 在线视频国产日韩| 亚洲精品一区二区久| 色婷婷综合久久久久| 日本免费一区二区三区视频观看| 成人黄色短视频在线观看| 日韩欧美国产视频| 久久午夜a级毛片| 日韩免费在线视频| 久久久精品视频在线观看| 成人美女免费网站视频| 欧美精品一区二区三区国产精品| 亚洲人成免费电影| 国产欧美 在线欧美| 日韩精品999| 欧美电影免费看| 91视频国产精品| 久久久精品一区二区三区| 国产精品主播视频| 国产精品激情av电影在线观看| 久久久久久久999| 国产日韩欧美在线播放| 亚洲精品久久久久久久久久久久久| 成人av电影天堂| 欧美在线观看一区二区三区| 91成人性视频| 欧美噜噜久久久xxx| 国产亚洲aⅴaaaaaa毛片| 欧美日韩国内自拍| 欧美激情精品久久久久久黑人| 色婷婷av一区二区三区在线观看| 国产日韩欧美影视| 中文国产亚洲喷潮| 在线观看中文字幕亚洲| 国产成人欧美在线观看| 欧美日韩亚洲一区二| 91精品视频在线免费观看| 91精品国产高清| 国产日韩在线一区| 国产精品视频色| 在线日韩日本国产亚洲| 久久国产精品偷| 国产亚洲精品激情久久| 亚洲www在线| 亚洲在线免费观看| 视频在线观看99| 亚洲精品一区二三区不卡| 性色av一区二区三区| 欧美丰满少妇xxxxx| 日韩一区二区欧美| 日韩国产一区三区| 一区二区三区亚洲| 国内久久久精品| 久久97精品久久久久久久不卡| 亚洲精品少妇网址| 欧美性极品xxxx做受| 日韩亚洲在线观看| 欧美国产极速在线| 中文字幕日韩电影| 成人乱人伦精品视频在线观看| 欧美性xxxx在线播放| 欧美性xxxx在线播放| 最好看的2019的中文字幕视频| 欧美激情影音先锋| 91理论片午午论夜理片久久|