{"flag":true,"single":true,"pageTitle":"Eloquent ORM Model, CRUD operations,","post":{"id":18,"user_id":"1","slug":"eloquent-crud-nvwb","title":"Eloquent ORM Model, CRUD operations,","body":"<p>Laravel includes Eloquent, an object-relational mapper (ORM) that&nbsp; interact with database. Each database table has a corresponding \"Model\" that is used to interact with that table.<\/p>\r\n<p>Eloquent models allow you to <strong>insert, update, and delete records<\/strong> from the table as well.<\/p>\r\n<p>You can create model using<\/p>\r\n<p>Model stays <strong>app\\Models <\/strong>directory<\/p>\r\n<pre class=\"language-markup\"><code>php artisan make:model Flight<\/code><\/pre>\r\n<pre class=\"language-markup\"><code>php artisan make:model Flight --migration \/\/model with migration<\/code><\/pre>\r\n<pre class=\"language-markup\"><code>php artisan make:model Flight --factory \/\/model with factory<\/code><\/pre>\r\n<pre class=\"language-markup\"><code>php artisan make:model Flight --seed \/\/model with seeder<\/code><\/pre>\r\n<pre class=\"language-markup\"><code>php artisan make:model Flight --controlle\/\/model with controller<\/code><\/pre>\r\n<pre class=\"language-markup\"><code># Shortcut to generate a model, migration, factory, seeder, policy, controller, and form requests...\r\nphp artisan make:model Flight --all<\/code><\/pre>\r\n<p>Created Model look like<\/p>\r\n<pre class=\"language-markup\"><code>&lt;?php\r\nnamespace App\\Models;\r\nuse Illuminate\\Database\\Eloquent\\Model;\r\nclass Flight extends Model\r\n{\r\n    \/\/\r\n}<\/code><\/pre>\r\n<p>by default flights table created. If you want custom you can use&nbsp;<\/p>\r\n<pre class=\"language-markup\"><code>class Flight extends Model\r\n{\r\n    protected $table = 'my_flights'; \/\/custom table name\r\n    protected $primaryKey = 'flight_id'; \/\/custom primary key\r\n    public $incrementing = false; \/\/if need increment false\r\n    public $timestamps = false; \/\/timestamps not add \r\n   protected $guarded = []; \/\/ allow all fields to insert \/update\r\n    protected $attributes = [ \/\/default value of delayed column\r\n        'delayed' =&gt; false,\r\n    ];\r\n}<\/code><\/pre>\r\n<p>_____________________________<\/p>\r\n<p>Eloquent return data as <strong>Illuminate\\Database\\Eloquent\\Collection,&nbsp;<\/strong><\/p>\r\n<p>&gt;&gt;1.<strong>Get data: use below command in controller or view&nbsp;<\/strong><\/p>\r\n<pre class=\"language-cpp\"><code>$data = \\App\\Models\\User::all();  \/\/return all users in users table using model User\r\nforeach ($data as $key =&gt; $user) {\r\n\techo $user-&gt;name;\r\n}<\/code><\/pre>\r\n<p><strong>&gt;&gt; GET data using where<\/strong><\/p>\r\n<pre class=\"language-markup\"><code>$data = \\App\\Models\\User::where('email', 'rizikmw@gmail.com')\r\n               -&gt;orderBy('id')\r\n               -&gt;take(10)\r\n               -&gt;get(); \/\/take means only 10 rows return<\/code><\/pre>\r\n<p><strong>&gt;&gt; Nested if condition<\/strong><\/p>\r\n<pre class=\"language-markup\"><code>\\App\\Models\\User::where('email', 'abc@gmail.com')\r\n   -&gt;where(function($query) {\r\n      $query-&gt;where('typeis', 'like', 'admin%')\r\n            -&gt;orWhere('typeis', \"like\", \"%\".\"super admin\".\"%\");\r\n   });<\/code><\/pre>\r\n<p><strong>&gt;&gt; Count data&nbsp;<\/strong><\/p>\r\n<pre class=\"language-markup\"><code>$count = \\App\\Models\\User::where('votes', '&gt;', 100)-&gt;count();\r\nOR\r\n$count = \\App\\Models\\User::where('votes', 100)-&gt;count();<\/code><\/pre>\r\n<p><strong>&gt;&gt; JSON Selection&nbsp;<\/strong><\/p>\r\n<pre class=\"language-markup\"><code>public function user_det($name){\r\n        $names = \\App\\Models\\User::where('name', 'like', $name.'%')\r\n            -&gt;selectRaw('name')\r\n            -&gt;distinct()\r\n           -&gt;take(10)\r\n           -&gt;get()-&gt;toArray();\r\n        if($names){\r\n            return response()-&gt;json(['flag' =&gt; true, 'locations' =&gt; $names],200);\r\n        }else{\r\n            return response()-&gt;json(['flag' =&gt; false, 'locations' =&gt; \"\"],200);\r\n        };\r\n    }<\/code><\/pre>\r\n<p><strong>&gt;&gt; Get column values<\/strong><\/p>\r\n<pre class=\"language-markup\"><code>$user_names= \\App\\Models\\User::distinct()-&gt;pluck('name');<\/code><\/pre>\r\n<p><strong>Insert Data<\/strong><\/p>\r\n<p><strong>Before Insert data must add this in model: <\/strong>It helps prevent unintended or malicious modification of model attributes. protected $fillable is a property in Laravel's Eloquent models that is used to specify which attributes on the model can be mass-assigned using the create() and update() methods.&nbsp;<\/p>\r\n<pre class=\"language-markup\"><code>protected $fillable = [\r\n        'name',\r\n        'email',\r\n    ];<\/code><\/pre>\r\n<pre class=\"language-markup\"><code>$user = new \\App\\Models\\User;\r\n$user-&gt;name = \"MR DUMMY\";\r\n$user-&gt;email = \"dummy@gmail.com\";\r\n$user-&gt;password = \"dummy@gmail.com\";\r\n$user-&gt;save();<\/code><\/pre>\r\n<p>OR<\/p>\r\n<pre class=\"language-markup\"><code>$flight = \\App\\Models\\User::create([\r\n    'name' =&gt; 'name to Paris',\r\n    'email'=&gt;\"dummyp@gmail.com\",\r\n    'password'=&gt;\"mrbbbbb\"\r\n]);<\/code><\/pre>\r\n<p><strong>UPDATE<\/strong><\/p>\r\n<pre class=\"language-markup\"><code>$user = \\App\\Models\\User::find(1); \/\/get user by ID\r\n$user-&gt;name = 'Rizwan AG';\r\n$user-&gt;save(); \/\/update\r\n\r\nOR\r\n\r\n\\App\\Models\\User::where('email', \"rizikmw@gmail.com\")\r\n      -&gt;update(['name' =&gt; \"R GONDAL\"]);<\/code><\/pre>\r\n<p><strong>updateOrCreate<\/strong><\/p>\r\n<pre class=\"language-markup\"><code>$user = \\App\\Models\\User::updateOrCreate(\r\n\t['email' =&gt; 'rizikmw2@gmail.com'],\r\n\t ['name' =&gt; \"updated rizi\",\"password\"=&gt;\"123\",\"email\"=&gt;\"rizikmw2@gmail.com\"]\r\n);\r\n\r\n\/\/if email rizikmw2@gmail.com exist update the name,password, and email else, insert<\/code><\/pre>\r\n<p><strong>DELETE<\/strong><\/p>\r\n<pre class=\"language-markup\"><code>$user = \\App\\Models\\User::find(1);\r\n$user-&gt;delete();\r\n\/\/OR\r\n \\App\\Models\\User::destroy(1); \/\/ONLY primary key accepted\r\n \\App\\Models\\User::destroy([1, 2, 3]);\r\n\/\/OR CONDITION\r\n$deleted = \\App\\Models\\User::where('email', 'admin@test.com')-&gt;delete();<\/code><\/pre>\r\n<p><strong>soft-deleting: <\/strong>NOT DELETE BUT deleted_at colum add: <br>https:\/\/laravel.com\/docs\/9.x\/eloquent#soft-deleting<\/p>\r\n<p>&nbsp;<\/p>\r\n<p><strong>Truncate Table<\/strong><\/p>\r\n<pre class=\"language-markup\"><code>\\App\\Models\\User::truncate();<\/code><\/pre>\r\n<p><strong>pruning-models:&nbsp;<\/strong>periodically delete records ie <strong>delete daily users that not verify there emails<\/strong><\/p>\r\n<p>&nbsp;<\/p>\r\n<p><span style=\"text-decoration: underline;\"><span style=\"font-size: 14pt;\"><strong>ACCESS MODEL FUNCTION IN CONTROLLER<\/strong><\/span><\/span><\/p>\r\n<p><span style=\"text-decoration: underline; font-size: 12pt;\"><strong>Step 1: Define a Public Function in the Model<\/strong><\/span><\/p>\r\n<pre class=\"language-markup\"><code>namespace App\\Models;\r\nuse Illuminate\\Database\\Eloquent\\Model;\r\nclass User extends Model\r\n{\r\n    public function getUserByName($name)\r\n    {\r\n        return $this-&gt;where('name', $name)-&gt;first();\r\n    }\r\n\r\n   public static function getUserByEmail($email)\r\n    {\r\n        return self::where('name', $email)-&gt;first();\r\n    }\r\n}\r\n<\/code><\/pre>\r\n<p><span style=\"text-decoration: underline;\"><strong>Step 2: Access the Public Function in the Controller<\/strong><\/span><\/p>\r\n<pre class=\"language-markup\"><code>class UserController extends Controller\r\n{\r\n    public function getUserByName($name)\r\n    {\r\n        $userModel = new \\App\\Models\\User();        \/\/ Create an instance of the User model\r\n        $user = $userModel-&gt;getUserByName(\"ABC\");\r\n        $user = \\App\\Models\\User::getUserByEmail(\"abc@gmail.com\"); \/\/ WITHOUT creating user instance we can access static function\r\n    }\r\n}<\/code><\/pre>\r\n<p>https:\/\/laravel.com\/docs\/9.x\/eloquent#pruning-models<\/p>","category_id":"2","is_private":"0","created_at":"2023-03-14T04:20:49.000000Z","updated_at":"2024-08-24T05:19:56.000000Z","category":{"id":2,"user_id":"1","name":"Laravel Core","slug":"laravel-nhyt","parent_id":"1","created_at":"2023-03-14T03:58:27.000000Z","updated_at":"2023-03-20T11:30:50.000000Z"},"user":{"id":1,"name":"R GONDAL","email":"rizikmw@gmail.com","email_verified_at":null,"two_factor_confirmed_at":null,"current_team_id":"1","profile_photo_path":null,"created_at":"2023-03-12T10:49:33.000000Z","updated_at":"2025-01-10T12:59:00.000000Z","profile_photo_url":"https:\/\/ui-avatars.com\/api\/?name=R+G&color=7F9CF5&background=EBF4FF"}},"pageDesc":"Laravel includes Eloquent, an object-relational mapper (ORM) that&nbsp; interact with database. Each database table has a corresponding \"Mod - Eloquent ORM Model, CRUD operations, (Updated: August 24, 2024) - Read more about Eloquent ORM Model, CRUD operations, at my programming site [SITE]","categories":[]}