Laravel Interview Questions and Answers

Laravel is the most used PHP framework for web development. Laravel interviews consist of questions about a deep understanding of PHP MVC architecture and app development basics like routes, controllers, views, and advanced topics such as Service Container, Dependency Injection, Accessors & Mutators, etc. We hope this tutorial will help you to face your interviews more confidently. A list of top frequently asked Laravel Interview Questions and answers are given below.

1. What is Laravel?
Laravel is an open-source widely used PHP framework. The platform was intended for the development of web application by using MVC architectural pattern. Laravel is released under the MIT license.
Therefore, its source code is hosted on GitHub. It is a reliable PHP framework as it follows expressive and accurate language rules.

2. What are the main features of Laravel?
Some of the main features of Laravel are:
o Eloquent ORM
o Query builder
o Reverse Routing
o Restful Controllers
o Migrations
o Database Seeding
o Unit Testing
o Homestead

3. What are the new features of Laravel 8?
Laravel 8 released on the 8th of September 2020 with new additional features and some modifications to the existing features.
The following list shows the new features of Laravel 8:
• Laravel Jetstream
• Models directory
• Model factory classes
• Migration squashing
• Time testing helpers
• Dynamic blade components
• Rate limiting improvements

4. Does Laravel support Bootstrap?
Yes, Laravel supports the Bootstrap CSS framework.

5. What are the advantages of using the Laravel framework to build complex web applications?
There are many advantages of using the Laravel framework and some of them are listed below:
• Laravel is free to use.
• Configuration of application is simple and straightforward.
• The framework supports the Model-View-Controller (MVC) architecture.
• Inbuilt modules and libraries of Laravel help to speed up the development process.
• The performance of Laravel applications is high.
• Routing is easy.
• It has a feature called Eloquent ORM that is used to handle database operations.
• It has a templating engine called Blade.
• Laravel has an inbuilt facility to support unit tests.
• Community support is high.

6. Name a few competitors / alternatives of Laravel?
The following list shows the top competitors. They are all among the top PHP Framework.
• Codeigniter
• Symfony
• Yii
• CakePHP
• Zend Framework
• Phalcon
• FuelPHP

7. What are pros and cons of using Laravel Framework?
Pros of using Laravel Framework:
1. Laravel framework has in-built lightweight blade template engine to speed up compiling task and create layouts with dynamic content easily.
2. Hassles code reusability.
3. Eloquent ORM with PHP active record implementation
4. Built in command line tool “Artisan” for creating a code skeleton , database structure and build their migration
Cons of using laravel Framework:
1. Development process requires you to work with standards and should have real understanding of programming
2. Laravel is new framework and composer is not so strong in compare to npm (for node.js), ruby gems and python pip.
3. Development in laravel is not so fast in compare to ruby on rails.
4. Laravel is lightweight so it has less inbuilt support in compare to django and rails. But this problem can be solved by integrating third party tools, but for large and very custom websites it may be a tedious task

8. How to install laravel via composer ?
The installation of Laravel via composer is very easy. You can install Laravel via composer by running the below command in the command prompt.
composer create-project laravel/laravel your-project-name version

9. Define composer.
It is an application-level package manager for PHP. It provides a standard format for managing PHP software dependencies and libraries.

10. What do you understand by Eloquent ORM?
Eloquent ORM (Object-Relational Mapping) is one of the main features of the Laravel framework. It may be defined as an advanced PHP implementation of the active record pattern.
Active record pattern is an architectural pattern which is found in software. It is responsible for keeping in-memory object data in relational databases
Eloquent ORM is also responsible for providing the internal methods at the same time when enforcing constraints on the relationship between database objects. Eloquent ORM represents database tables as classes, with their object instances tied to single table rows, while following the active record pattern.

11. What is HTTP middleware?
HTTP middleware is a technique for filtering HTTP requests. Laravel includes a middleware that checks whether application user is authenticated or not.
There are two types of middleware available in Laravel:
Global Middleware:
It will run on every HTTP request of the application.
Route Middleware:
It will be assigned to a specific route.

php artisan make:middlewareMiddelwareName


php artisan make:middlewareUserMiddleware

Now, UserMiddleware.php file will be created in app/Http/Middleware.

laravel middleware

12. What is Query Builder in Laravel?
Laravel’s Query Builder provides more direct access to the database, alternative to the Eloquent ORM. It doesn’t require SQL queries to be written directly. Instead, it offers a set of classes and methods which are capable of building queries programmatically. It also allows specific caching of the results of the executed queries.
The Laravel query builder uses PDO parameter binding to protect your application against SQL injection attacks. There is no need to clean strings being passed as bindings.
Some QB features:
• Chunking
• Aggregates
• Selects
• Raw Expressions
• Joins
• Unions
• Where
• Ordering, Grouping, Limit, & Offset

13. Name aggregates methods of query builder.
Aggregates methods of query builder are: 1) max(), 2) min(), 3) sum(), 4) avg(), and 5) count().

14. What is autoloading classes in PHP?
With autoloaders, PHP allows the last chance to load the class or interface before it fails with an error.
The spl_autoload_register() function in PHP can register any number of autoloaders, enable classes and interfaces to autoload even if they are undefined.


In the above example we do not need to include Class1.php and Class2.php. The spl_autoload_register() function will automatically load Class1.php and Class2.php.

15. What is the benefit of eager loading, when do you use it?
When accessing Eloquent relationships as properties, the relationship data is “lazy loaded”. This means the relationship data is not actually loaded until you first access the property. However, Eloquent can “eager load” relationships at the time you query the parent model.
Eager loading alleviates the N + 1 query problem when we have nested objects (like books -> author). We can use eager loading to reduce this operation to just 2 queries.

16. How to define environment variables in Laravel?
The environment variables can be defined in the .env file in the project directory. A brand new laravel application comes with a .env.example and while installing we copy this file and rename it to .env and all the environment variables will be defined here.
Some of the examples of environment variables are APP_ENV, DB_HOST, DB_PORT, etc.

17. Can we use Laravel for Full Stack Development (Frontend + Backend)?
Laravel is the best choice to make progressive, scalable full-stack web applications. Full-stack web applications can have a backend in laravel and the frontend can be made using blade files or SPAs using Vue.js as it is provided by default. But it can also be used to just provide rest APIs to a SPA application.
Hence, Laravel can be used to make full-stack applications or just the backend APIs only.

18. How to put Laravel applications in maintenance mode?
Maintenance mode is used to put a maintenance page to customers and under the hood, we can do software updates, bug fixes, etc. Laravel applications can be put into maintenance mode using the below command:

php artisan down

And can put the application again on live using the below command:

php artisan up

Also, it is possible to access the website in maintenance mode by whitelisting particular IPs.

19. What is a Route?
A route is basically an endpoint specified by a URI (Uniform Resource Identifier). It acts as a pointer in Laravel application.
Most commonly, a route simply points to a method on a controller and also dictates which HTTP methods are able to hit that URI.

20. Why use Route?
Routes are stored inside files under the /routes folder inside the project’s root directory. By default, there are a few different files corresponding to the different “sides” of the application (“sides” comes from the hexagonal architecture methodology).

21. What do you understand by Reverse routing?
Reverse routing in Laravel is used to generate the URL based on name or symbol. It defines a relationship between the links and, Laravel routes, and it is possible to make later changes to the routes to be automatically propagated into relevant links. When the links are generated using names of existing routes, the appropriate uniform resource identifiers (URIs) are automatically generated by Laravel. Reverse routing provides flexibility to the application and helps the developer to write cleaner codes.
Route Declaration:

Route::get('login', 'users@login');

A link can be created to it using reverse routing, which can be further transferred in any parameter that we have defined. If optional parameters are not supplied, they are removed automatically from the generated links.

{{ HTML::link_to_action('users@login') }}

By using it, a URL like will be created automatically.

22. What are the default route files in Laravel?
Below are the four default route files in the routes folder in Laravel:
web.php – For registering web routes.
api.php – For registering API routes.
console.php – For registering closure-based console commands.
channel.php – For registering all your event broadcasting channels that your application supports.

23. What are named routes?
A named route is a route definition with the name assigned to it. We can then use that name to call the route anywhere else in the application.

Route::get('/hello', 'HomeController@index')->name('index');

This can be accessed in a controller using the following:

return redirect()->route('index');

24. What are route groups?
Route Groups in laravel is used when we need to group route attributes like middlewares, prefixes, etc. we use route groups. It saves us a headache to put each attribute to each route.

Route::middleware(['throttleMiddleware'])->group(function () {
Route::get('/', function () {
// Uses throttleMiddleware

Route::get('/user/profile', function () {
// Uses throttleMiddleware

25. What do you mean by bundles?
In Laravel, bundles are referred to as packages. These packages are used to increase the functionality of Laravel. A package can have views, configuration, migrations, routes, and tasks.There are different types of packages. Some of them are stand-alone packages. This means they can work with any PHP framework. The frameworks like Carbon and Behat are examples of stand-alone packages. Other packages are intended for use with Laravel. These packages may contain routes, controllers, views, and configurations which are mainly designed to enhance a Laravel application.

26. Explain important directories used in a common Laravel application.
Directories used in a common Laravel application are:
App/: This is a source folder where our application code lives. All controllers, policies, and models are inside this folder.
Config/: Holds the app’s configuration files. These are usually not modified directly but instead, rely on the values set up in the .env (environment) file at the root of the app.
Database/: Houses the database files, including migrations, seeds, and test factories.
Public/: Publicly accessible folder holding compiled assets and of course an index.php file.

27. Does Laravel support caching?
Yes, Laravel provides support for popular caching backends like Memcached and Redis.
By default, Laravel is configured to use file cache driver, which is used to store the serialized or cached objects in the file system. For huge projects, it is suggested to use Memcached or Redis.

28. How to clear cache in Laravel?
The syntax to clear cache in Laravel is given below:
o php artisan cache: clear
o php artisan config: clear
o php artisan cache: clear

29. What do you understand by database migrations in Laravel? How can we use it?
Migrations can be defined as version control for the database, which allows us to modify and share the application’s database schema easily. Migrations are commonly paired with Laravel’s schema builder to build the application’s database schema easily.
A migration file includes two methods, up() and down(). A method up() is used to add new tables, columns or indexes database and the down() method is used to reverse the operations performed by the up() method.
We can generate a migration and its file by using the make:migration.

php artisan make:migration blog

By using it, a current date blog.php file will be created in database/migrations.

30. Why are migrations necessary?
Migrations are necessary because:
• Without migrations, database consistency when sharing an app is almost impossible, especially as more and more people collaborate on the web app.
• Your production database needs to be synced as well.

31. How can someone change the default database type in Laravel?
Laravel is configured to use MySQL by default.
To change its default database type, edit the file config/database.php:
o Search for ‘default’ =>env(‘DB_CONNECTION’, ‘mysql’)
o Change it to whatever required like ‘default’ =>env(‘DB_CONNECTION’, ‘sqlite’)
By using it, MySQL changes to SQLite.

32. How can we create a record in Laravel using eloquent?
We need to create a new model instance if we want to create a new record in the database using Laravel eloquent. Then we are required to set attributes on the model and call the save() method.

public functionsaveProduct(Request $request )
$product = new product;
$product->name = $request->name;
$product->description = $request->name;

33. What are seeders in Laravel?
Seeders in Laravel are used to put data in the database tables automatically. After running migrations to create the tables, we can run `php artisan db:seed` to run the seeder to populate the database tables.
We can create a new Seeder using the below artisan command:

php artisan make:seeder [className]

It will create a new Seeder like below:



* Run the database seeds.
factory(User::class, 10)->create();

The run() method in the above code snippet will create 10 new users using the User factory.
Factories will be explained in the next question.

34. What are factories in Laravel?
Factories are a way to put values in fields of a particular model automatically. Like, for testing when we add multiple fake records in the database, we can use factories to generate a class for each model and put data in fields accordingly. Every new laravel application comes with database/factories/UserFactory.php which looks like below:




* The name of the factory's corresponding model.
* @var string
protected$model = User::class;

* Define the model's default state.
* @return array
return [
'name' =>$this->faker->name,
'email' =>$this->faker->unique()->safeEmail,
'email_verified_at' =>now(),
'password' =>'$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password
'remember_token' =>Str::random(10),

We can create a new factory using php artisan make:factoryUserFactory –class=User.
The above command will create a new factory class for the User model. It is just a class that extends the base Factory class and makes use of the Faker class to generate fake data for each column. With the combination of factory and seeders, we can easily add fake data into the database for testing purposes.

35. How to implement soft delete in Laravel?
Soft Delete means when any data row is deleted by any means in the database, we are not deleting the data but adding a timestamp of deletion.
We can add soft delete features by adding a trait in the model file like below.

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class Post extends Model {


protected $table = 'posts';

// ...

36. What are Models?
With Laravel, each database table can have a model representation using a model file which can be used to interact with that table using Laravel Eloquent ORM.
We can create a model using this artisan command:

php artisan make:model Post

This will create a file in the models’ directory and will look like below:

class Post extends Model
* The attributes that are mass assignable.
* @var array
protected $fillable = [];

* The attributes that should be hidden for arrays.
* @var array
protected $hidden = [];

A Model can have properties like table, fillable, hidden, etc which defines properties of the table and model.

37. What is a Controller?
A controller is the “C” in the “MVC” (Model-View-Controller) architecture, which is what Laravel is based on.

38. Explain traits in Laravel.
PHP Traits is a group of methods which can be included within another class. A Trait cannot be instantiated by itself like an abstract class. Traits are generated to reduce the limitations of single inheritance in PHP. It allows a developer to reuse sets of methods freely in various independent classes living in different class hierarchies.

trait Sharable {
public function share($item)
return 'share this item';

We can then include this Trait within other classes like:

class Post {
use Sharable;
class Comment {
use Sharable;

Now, if we want to create new objects out of these classes, we would find that they both have the share() method available:

$post = new Post;
echo $post->share(''); // 'share this item'
$comment = new Comment;
echo $comment->share(''); // 'share this item'

39. Explain the concept of contracts in Laravel.
They are set of interfaces of Laravel framework. These contracts provide core services. Contracts defined in Laravel include corresponding implementation of framework.

contracts in Laravel

40. What are queues in Laravel?
While building any application we face a situation where some tasks take time to process and our page gets loading until that task is finished. One task is sending an email when a user registers, we can send the email to the user as a background task, so our main thread is responsive all the time. Queues are a way to run such tasks in the background.

41. What are accessors and mutators?
Accessors are a way to retrieve data from eloquent after doing some operation on the retrieved fields from the database. For example, if we need to combine the first and last names of users but we have two fields in the database, but we want whenever we fetch data from eloquent queries these names need to be combined.
We can do that by creating an accessor like below:

public function getFullNameAttribute()
return $this->first_name . " " . $this->last_name;

What the above code will do is it will give another attribute(full_name) in the collection of the model, so if we need the combined name we can call it like this: `$user->full_name`. Mutators are a way to do some operations on a particular field before saving it to the database.
For example, if we wanted the first name to be capitalized before saving it to the database, we can create something like the below:

public function setFirstNameAttribute($value)
$this->attributes[‘first_name’] = strtoupper($value);

So, whenever we are setting this field to be anything:

$user->first_name = Input::get('first_name');

It will change the first_name to be capitalized and it will save to the database.

42. Briefly describe some common collection methods in Laravel.
Collections is a wrapper class to work with arrays. Laravel Eloquent queries use a set of the most common functions to return database result. Collections give us handy methods over them to easily work with the data like looping over data or doing some operation on it.
The following list shows some common collection methods:
a) first() – This method returns the first element in the collection.

collect([1, 2, 3])->first();
// It returns 1 as the output.

b) unique(): This method returns all unique items in the collection.

$collection= collect([1, 3, 2, 2, 4, 4, 1, 2, 5]);
$unique= $collection->unique();
// It returns [1, 2, 3, 4, 5] as the output.

c) contains(): This method checks whether the collection contains a given item.

$collection= collect(['student'=> 'Sachin', 'id'=> 320]);

// It returns true as the output.

// It returns false as the output.

d) get(): This method returns the item at a given key.

$collection= collect(['car'=> 'BMW', 'colour'=> 'black']);
$value= $collection->get('car');

// It returns "BMW" as the output.

e) toJson(): This method converts the collection into a JSON serialized string.

$collection= collect(['student'=> 'Sachin', 'id'=> 320]);

// It returns "{"student":"Sachin","id":320}" as the output.

f) toArray(): This method converts the collection into a plain PHP array.

$collection= collect(['student'=> 'Sachin', 'id'=> 320]);

// It returns ["student" => "Sachin","id" => 320,] as the output.

g) join(): This method joins the collection’s values with a string.

collect(['x', 'y', 'z'])->join(', ');
// It returns "x, y, z" as the output.

collect(['x', 'y', 'z'])->join(', ', ', and ');
// It returns "x, y, and z" as the output.

collect(['x', 'y'])->join(', ', ' and ');
// It returns "x and y" as the output.

collect(['x'])->join(', ', ' and ');
// It returns "x" as the output.

collect([])->join(', ', ' and ');
// It returns "" as the output.

h) isNotEmpty(): This method returns true if the collection is not empty; otherwise, it returns false.

// It returns false as the output.

i) Implode(): This method joins the items in a collection.

$collection= collect([
['student_id'=> 1, 'name'=> 'Bob'],
['student_id'=> 2, 'name'=> 'David'],
['student_id'=> 3, 'name'=> 'Peter'],

$collection->implode('name', ', ');

// It returns "Bob, David, Peter" as the output.

j) last(): This method returns the last element in the collection.

collect([1, 2, 3])->last();

// It returns 3 as the output.

43. What are official packages in Laravel?
The following list below shows the official packages of Laravel 8:
• Cashier (Stripe)
• Cashier (Paddle)
• Cashier (Mollie)
• Dusk
• Envoy
• Horizon
• Jetstream
• Passport
• Sanctum
• Scout
• Socialite
• Telescope
The following list below shows the official packages of Laravel 7:
• Cashier (Stripe)
• Cashier (Paddle)
• Cashier (Mollie)
• Dusk
• Envoy
• Horizon
• Passport
• Sanctum
• Scout
• Socialite
• Telescope

44. What do you know about Service providers in Laravel?
Service providers can be defined as the central place to configure all the entire Laravel applications. Applications, as well as Laravel’s core services, are bootstrapped via service providers. These are powerful tools for maintaining class dependencies and performing dependency injection. Service providers also instruct Laravel to bind various components into the Laravel’s Service Container.
An artisan command is given here which can be used to generate a service provider:

php artisan make: provider ClientsServiceProvider

Almost, all the service providers extend the Illuminate\Support\ServiceProviderclass. Most of the service providers contain below-listed functions in its file:
o Register() Function
o Boot() Function
Within the Register() method, one should only bind things into the service container. One should never attempt to register any event listeners, routes, or any other piece of functionality within the Register() method.

45. What is the register and boot method in the Service Provider class?
The register method in the Service Provider class is used to bind classes or services to the Service Container. It should not be used to access any other functionality or classes from the application as the service you are accessing may not have loaded yet into the container.
The boot method runs after all the dependencies have been included in the container and now we can access any functionality in the boot method. Like you can create routes, create a view composer, etc in the boot method.

46. How will you register service providers?
You can register service providers in the config/app.php configuration file that contains an array where you can mention the service provider class name.

47. What is throttling and how to implement it in Laravel?
Throttling is a process to rate-limit requests from a particular IP. This can be used to prevent DDOS attacks as well. For throttling, Laravel provides a middleware that can be applied to routes and it can be added to the global middlewares list as well to execute that middleware for each request.
Here’s how you can add it to a particular route:

Route::middleware('auth:api', 'throttle:60,1')->group(function () {
Route::get('/user', function () {

This will enable the /user route to be accessed by a particular user from a particular IP only 60 times in a minute.

48. What do you know about Facades in Laravel? Explain.
Laravel Facades provide static-like interface classes which are available in the application’s service container. Laravel self-ships with several available facades, gives access to almost all features of Laravel. Facades also help to access a service directly from the container itself. It is described in the Illuminate\Support\Facades namespace. Hence, it is easy to use.

use Illuminate\Support\Facades\Cache;
Route::get('/cache', function () {
return Cache::get('PutkeyNameHere');

Facades in Laravel

49. Where will you define Laravel’s Facades?
All facades of Laravel have defined in Illuminate\Support\Facades namespace.

50. State the difference between get and post method.
Get method allows you to send a limited amount of data in the header. Post allows you to send a large amount of data in the body.

Sign-up for our email newsletter and get free job alerts, current affairs and GK updates regularly.
Subscribe Here (or)

Leave a Reply

Your email address will not be published. Required fields are marked *

four × 1 =

Popup Dialog Box Powered By :
  • RSS
  • Facebook
  • Google+
  • Twitter