  {"id":453,"date":"2022-09-24T16:08:06","date_gmt":"2022-09-24T16:08:06","guid":{"rendered":"https:\/\/247blogs.com\/wp\/2022\/09\/24\/laravel-9-tutorial-generate-test-or-dummy-data-with-laravel-9-factory-tinker\/"},"modified":"2022-09-24T17:37:12","modified_gmt":"2022-09-24T17:37:12","slug":"laravel-9-tutorial-generate-test-or-dummy-data-with-laravel-9-factory-tinker","status":"publish","type":"post","link":"https:\/\/247blogs.com\/wp\/laravel-9-tutorial-generate-test-or-dummy-data-with-laravel-9-factory-tinker\/","title":{"rendered":"Laravel-9 Tutorial &#8211; Generate Test or Dummy Data with Laravel 9 Factory Tinker"},"content":{"rendered":"<div id=\"\">\n<p>In this Laravel factory tutorial, you will learn how to generate and insert test or fake or dummy data into the database using Laravel factory. Not just that you will also learn how to use PHP Faker library in Laravel app to generate fake data.<\/p>\n<p><a href=\"https:\/\/github.com\/fzaninotto\/Faker\" rel=\"noopener noreferrer\" target=\"_blank\">Faker<\/a> is an exorbitantly powerful PHP library that generates fake data for you and gives you moksha from all the pain you feel while developing a new application.<\/p>\n<p>Developing an application requires lots of data to test the robustness of specific functionality be it user records, pagination, articles; If you manually add hundreds of records for testing, then it may take more time.<\/p>\n<p>Fret not, and we have a painless solution for you to create test data in laravel:<\/p>\n<p>Laravel offers factory tinker, and you can count on Laravel Tinker with your eyes closed, it lets you create fake records or dummy data in the database. With the help of Laravel factory tinker, you can generate thousands of records and add into the database within seconds.<\/p>\n<p>You can seed the database with just a simple Model class, so without further ado, let\u2019s see how easy it is to create fake or test records using laravel factory.<\/p>\n<p>You can find the documentation for Tinker on the Laravel website.<\/p>\n<h2>Install Laravel Project<\/h2>\n<p>You need to lay down the composer tool in your development system to install the laravel project, afterwards use the following command to manifest a new laravel app:<\/p>\n<pre class=\"  language-bash\"><code class=\"  language-bash\">composer create-project laravel\/laravel laravel-factory-tinker-example --prefer-dist<\/code><\/pre>\n<h2>Make Database Connection<\/h2>\n<p>If you are developing a laravel app and wants to connect to the database, so open the .env file then insert your database name, username likewise the password:<\/p>\n<pre class=\" language-markup\"><code class=\" language-properties\"><span class=\"token attr-name\">DB_CONNECTION<\/span><span class=\"token punctuation\">=<\/span><span class=\"token attr-value\">mysql<\/span>\n<span class=\"token attr-name\">DB_HOST<\/span><span class=\"token punctuation\">=<\/span><span class=\"token attr-value\">127.0.0.1<\/span>\n<span class=\"token attr-name\">DB_PORT<\/span><span class=\"token punctuation\">=<\/span><span class=\"token attr-value\">3306<\/span>\n<span class=\"token attr-name\">DB_DATABASE<\/span><span class=\"token punctuation\">=<\/span><span class=\"token attr-value\">database<\/span>\n<span class=\"token attr-name\">DB_USERNAME<\/span><span class=\"token punctuation\">=<\/span><span class=\"token attr-value\">root<\/span>\n<span class=\"token attr-name\">DB_PASSWORD<\/span><span class=\"token punctuation\">=<\/span><\/code><\/pre>\n<p>If you are using MAMP local server in macOs; make sure to append UNIX_SOCKET and DB_SOCKET below database credentials in <strong>.env <\/strong>file.<\/p>\n<pre class=\"language-bash\" tabindex=\"0\"><code class=\"language-bash\"><span class=\"token assign-left variable\">UNIX_SOCKET<\/span><span class=\"token operator\">=<\/span>\/Applications\/MAMP\/tmp\/mysql\/mysql.sock\n<span class=\"token assign-left variable\">DB_SOCKET<\/span><span class=\"token operator\">=<\/span>\/Applications\/MAMP\/tmp\/mysql\/mysql.sock<\/code><\/pre>\n<h2>Generate Model &#038; Run Migration<\/h2>\n<p>For the database seeding example, let\u2019s create a Blog model usually it will create a table in the database with table columns as properties.<\/p>\n<pre class=\"  language-bash\"><code class=\"  language-bash\">php artisan make:model Blog -m<\/code><\/pre>\n<p>Add table properties in <strong>app\/Models\/Blog.php<\/strong>:<\/p>\n<pre class=\" language-markup\"><code class=\" language-php\"><span class=\"token php language-php\"><span class=\"token delimiter important\"><?php<\/span>\n<span class=\"token keyword\">namespace<\/span> <span class=\"token package\">App<span class=\"token punctuation\"><\/span>Models<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token keyword\">use<\/span> <span class=\"token package\">Illuminate<span class=\"token punctuation\"><\/span>Database<span class=\"token punctuation\"><\/span>Eloquent<span class=\"token punctuation\"><\/span>Factories<span class=\"token punctuation\"><\/span>HasFactory<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token keyword\">use<\/span> <span class=\"token package\">Illuminate<span class=\"token punctuation\"><\/span>Database<span class=\"token punctuation\"><\/span>Eloquent<span class=\"token punctuation\"><\/span>Model<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Blog<\/span> <span class=\"token keyword\">extends<\/span> <span class=\"token class-name\">Model<\/span>\n<span class=\"token punctuation\">{<\/span>\n    <span class=\"token keyword\">use<\/span> <span class=\"token package\">HasFactory<\/span><span class=\"token punctuation\">;<\/span>\n    <span class=\"token keyword\">protected<\/span> <span class=\"token variable\">$fillable<\/span> <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">[<\/span>\n        <span class=\"token string single-quoted-string\">'title'<\/span><span class=\"token punctuation\">,<\/span> \n        <span class=\"token string single-quoted-string\">'url'<\/span><span class=\"token punctuation\">,<\/span> \n        <span class=\"token string single-quoted-string\">'category'<\/span><span class=\"token punctuation\">,<\/span>\n        <span class=\"token string single-quoted-string\">'description'<\/span>\n    <span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span>    \n<span class=\"token punctuation\">}<\/span><\/span><\/code><\/pre>\n<p>Place table properties in <strong>database\/migrations\/create_blogs_table.php<\/strong> migration file as well:<\/p>\n<pre class=\" language-markup\"><code class=\"  language-php\"><span class=\"token php language-php\"><span class=\"token delimiter important\"><?php<\/span>\n<span class=\"token keyword\">use<\/span> <span class=\"token package\">Illuminate<span class=\"token punctuation\"><\/span>Database<span class=\"token punctuation\"><\/span>Migrations<span class=\"token punctuation\"><\/span>Migration<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token keyword\">use<\/span> <span class=\"token package\">Illuminate<span class=\"token punctuation\"><\/span>Database<span class=\"token punctuation\"><\/span>Schema<span class=\"token punctuation\"><\/span>Blueprint<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token keyword\">use<\/span> <span class=\"token package\">Illuminate<span class=\"token punctuation\"><\/span>Support<span class=\"token punctuation\"><\/span>Facades<span class=\"token punctuation\"><\/span>Schema<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token keyword\">class<\/span> <span class=\"token class-name\">CreateBlogsTable<\/span> <span class=\"token keyword\">extends<\/span> <span class=\"token class-name\">Migration<\/span>\n<span class=\"token punctuation\">{<\/span>\n    \n    <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">function<\/span> <span class=\"token function\">up<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n    <span class=\"token punctuation\">{<\/span>\n        <span class=\"token class-name static-context\">Schema<\/span><span class=\"token operator\">::<\/span><span class=\"token function\">create<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string single-quoted-string\">'blogs'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">function<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token class-name type-declaration\">Blueprint<\/span> <span class=\"token variable\">$table<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n            <span class=\"token variable\">$table<\/span><span class=\"token operator\">-><\/span><span class=\"token function\">id<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n            <span class=\"token variable\">$table<\/span><span class=\"token operator\">-><\/span><span class=\"token keyword type-declaration\">string<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string single-quoted-string\">'title'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n            <span class=\"token variable\">$table<\/span><span class=\"token operator\">-><\/span><span class=\"token keyword type-declaration\">string<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string single-quoted-string\">'url'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n            <span class=\"token variable\">$table<\/span><span class=\"token operator\">-><\/span><span class=\"token keyword type-declaration\">string<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string single-quoted-string\">'category'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n            <span class=\"token variable\">$table<\/span><span class=\"token operator\">-><\/span><span class=\"token keyword type-declaration\">string<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string single-quoted-string\">'description'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>                        \n            <span class=\"token variable\">$table<\/span><span class=\"token operator\">-><\/span><span class=\"token function\">timestamps<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n        <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n    <span class=\"token punctuation\">}<\/span>\n    \n    <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">function<\/span> <span class=\"token function\">down<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n    <span class=\"token punctuation\">{<\/span>\n        <span class=\"token class-name static-context\">Schema<\/span><span class=\"token operator\">::<\/span><span class=\"token function\">dropIfExists<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string single-quoted-string\">'blogs'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n    <span class=\"token punctuation\">}<\/span>\n<span class=\"token punctuation\">}<\/span><\/span><\/code><\/pre>\n<p>Next, you can migrate table properties in the database with the artisan migrate command:<\/p>\n<pre class=\"  language-bash\"><code class=\"  language-bash\">php artisan migrate<\/code><\/pre>\n<h2>Create Custom Factory<\/h2>\n<p>To work with laravel factory, you need to create a custom factory class in Laravel:<\/p>\n<pre class=\" language-bash\"><code class=\" language-bash\">php artisan make:factory BlogFactory --model<span class=\"token operator\">=<\/span>Blog\n<\/code><\/pre>\n<p>Go ahead and place the below code in <strong>databasefactoriesBlogFactory.php<\/strong> file:<\/p>\n<pre class=\" language-markup\"><code class=\"  language-php\"><span class=\"token php language-php\"><span class=\"token delimiter important\"><?php<\/span>\n<span class=\"token keyword\">namespace<\/span> <span class=\"token package\">Database<span class=\"token punctuation\"><\/span>Factories<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token keyword\">use<\/span> <span class=\"token package\">App<span class=\"token punctuation\"><\/span>Models<span class=\"token punctuation\"><\/span>Blog<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token keyword\">use<\/span> <span class=\"token package\">Illuminate<span class=\"token punctuation\"><\/span>Database<span class=\"token punctuation\"><\/span>Eloquent<span class=\"token punctuation\"><\/span>Factories<span class=\"token punctuation\"><\/span>Factory<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token keyword\">use<\/span> <span class=\"token package\">Illuminate<span class=\"token punctuation\"><\/span>Support<span class=\"token punctuation\"><\/span>Str<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token keyword\">class<\/span> <span class=\"token class-name\">BlogFactory<\/span> <span class=\"token keyword\">extends<\/span> <span class=\"token class-name\">Factory<\/span>\n<span class=\"token punctuation\">{<\/span>\n    \n    <span class=\"token keyword\">protected<\/span> <span class=\"token variable\">$model<\/span> <span class=\"token operator\">=<\/span> <span class=\"token class-name static-context\">Blog<\/span><span class=\"token operator\">::<\/span><span class=\"token keyword\">class<\/span><span class=\"token punctuation\">;<\/span>\n    \n    <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">function<\/span> <span class=\"token function\">definition<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n    <span class=\"token punctuation\">{<\/span>\n        <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">[<\/span>\n            <span class=\"token string single-quoted-string\">'title'<\/span> <span class=\"token operator\">=><\/span> <span class=\"token variable\">$this<\/span><span class=\"token operator\">-><\/span><span class=\"token property\">faker<\/span><span class=\"token operator\">-><\/span><span class=\"token property\">name<\/span><span class=\"token punctuation\">,<\/span>\n            <span class=\"token string single-quoted-string\">'url'<\/span> <span class=\"token operator\">=><\/span> <span class=\"token class-name static-context\">Str<\/span><span class=\"token operator\">::<\/span><span class=\"token function\">slug<\/span><span class=\"token punctuation\">(<\/span><span class=\"token variable\">$this<\/span><span class=\"token operator\">-><\/span><span class=\"token property\">faker<\/span><span class=\"token operator\">-><\/span><span class=\"token property\">name<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\n            <span class=\"token string single-quoted-string\">'category'<\/span> <span class=\"token operator\">=><\/span> <span class=\"token variable\">$this<\/span><span class=\"token operator\">-><\/span><span class=\"token property\">faker<\/span><span class=\"token operator\">-><\/span><span class=\"token property\">name<\/span><span class=\"token punctuation\">,<\/span>\n            <span class=\"token string single-quoted-string\">'description'<\/span> <span class=\"token operator\">=><\/span> <span class=\"token variable\">$this<\/span><span class=\"token operator\">-><\/span><span class=\"token property\">faker<\/span><span class=\"token operator\">-><\/span><span class=\"token property\">text<\/span><span class=\"token punctuation\">,<\/span>\n        <span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span>\n    <span class=\"token punctuation\">}<\/span>\n<span class=\"token punctuation\">}<\/span><\/span><\/code><\/pre>\n<h2>Generate Dummy Records with Factory Tinker<\/h2>\n<p>Eventually, we are about to create 1000 test data and seed them into the Blog table. Use the below command to check your database later for fake data similarly.<\/p>\n<pre class=\" language-markup\"><code class=\" language-bash\">php artisan tinker<\/code><\/pre>\n<p>You\u2019ve entered into the Psy Shell now execute the command:<\/p>\n<pre class=\" language-markup\"><code class=\"  language-bash\">Blog::factory<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>-<span class=\"token operator\">><\/span>count<span class=\"token punctuation\">(<\/span><span class=\"token number\">1000<\/span><span class=\"token punctuation\">)<\/span>-<span class=\"token operator\">><\/span>create<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/code><\/pre>\n<p>Next, see the generated Blog records inside PHPMyAdmin.<\/p>\n<p>Remember, we are generating the data for Blog model so we used <code>Blog::factory()<\/code>, likewise append the same <strong>\u201cModal name\u201d<\/strong> for which you are generating the dummy data. For instance we can do the following for <strong>User<\/strong> model:<\/p>\n<pre class=\" language-markup\"><code class=\"  language-bash\">User::factory<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>-<span class=\"token operator\">><\/span>count<span class=\"token punctuation\">(<\/span><span class=\"token number\">500<\/span><span class=\"token punctuation\">)<\/span>-<span class=\"token operator\">><\/span>create<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/code><\/pre>\n<p>In this tutorial, we created the limited properties, however, you can generate more properties with Faker:<\/p>\n<ul>\n<li>Lorem Ipsum Text<\/li>\n<li>Person<\/li>\n<li>Address<\/li>\n<li>Phone Number<\/li>\n<li>Company<\/li>\n<li>Real Text<\/li>\n<li>Date and Time<\/li>\n<li>Internet<\/li>\n<li>User Agent<\/li>\n<li>Payment<\/li>\n<li>Color<\/li>\n<li>File<\/li>\n<li>Image<\/li>\n<li>Uuid<\/li>\n<li>Barcode<\/li>\n<li>Miscellaneous<\/li>\n<li>Biased<\/li>\n<li>Html Lorem<\/li>\n<\/ul>\n<h2>Summary<\/h2>\n<p>The Laravel Factory Tinker tutorial is over. This Factory Tinker example explained how to generate fake or test data using custom Factory tinker in Laravel application for two different Model or database table.<\/p>\n<p>Nonetheless, I believe this tutorial will help you in your development journey. Share your feedback about this tutorial and help others.<\/p>\n<p>Thank you, have a nice day!<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>In this Laravel factory tutorial, you will learn how to generate and insert test or fake or dummy data into the database using Laravel factory. Not just that you will [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":454,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19,14],"tags":[],"class_list":["post-453","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel","category-tutorial","clearfix"],"_links":{"self":[{"href":"https:\/\/247blogs.com\/wp\/wp-json\/wp\/v2\/posts\/453","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/247blogs.com\/wp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/247blogs.com\/wp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/247blogs.com\/wp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/247blogs.com\/wp\/wp-json\/wp\/v2\/comments?post=453"}],"version-history":[{"count":1,"href":"https:\/\/247blogs.com\/wp\/wp-json\/wp\/v2\/posts\/453\/revisions"}],"predecessor-version":[{"id":646,"href":"https:\/\/247blogs.com\/wp\/wp-json\/wp\/v2\/posts\/453\/revisions\/646"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/247blogs.com\/wp\/wp-json\/wp\/v2\/media\/454"}],"wp:attachment":[{"href":"https:\/\/247blogs.com\/wp\/wp-json\/wp\/v2\/media?parent=453"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/247blogs.com\/wp\/wp-json\/wp\/v2\/categories?post=453"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/247blogs.com\/wp\/wp-json\/wp\/v2\/tags?post=453"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}