Skip to content  


Get started with PHP and Laravel faster than ever using Laravel Herd.  


Join us in Dallas, TX! Tickets are now available for Laracon US.  


Let's go to India! Tickets are now available for Laracon IN.  


Let's go to Europe! Tickets are now available for Laracon EU.  


Let's go down under! Tickets are now available for Laracon AU.  


Servers with PHP 8.3 are now available for provisioning via Laravel Forge.  


Deploy Laravel with the infinite scale of serverless using Laravel Vapor.  


How's your health? Check your application's vital signs using Laravel Pulse.  


Incoming transmission received. Laravel Reverb is now available!  


Take your administration backend to another dimension with Laravel Nova.  


Laravel is hiring! Help us build the future of Laravel.  







Preface



Introduction

Quickstart

Release Notes

Upgrade Guide

Contribution Guide



Getting Started



Installation

Configuration

Homestead

Request Lifecycle

Routing

Requests & Input

Views & Responses

Controllers

Errors & Logging



Learning More



Authentication

Billing

Cache

Core Extension

Events

Facades

Forms & HTML

Helpers

IoC Container

Localization

Mail

Package Development

Pagination

Queues

Security

Session

SSH

Templates

Unit Testing

Validation



Database



Basic Usage

Query Builder

Eloquent ORM

Schema Builder

Migrations & Seeding

Redis



Artisan CLI



Overview

Development



 

Laravel Forge: create and manage PHP 8 servers. Deploy your Laravel applications in seconds. Sign up now!.  

Laravel Vapor: experience extreme scale on a dedicated serverless platform for Laravel. Sign up now!.  

Laravel Nova: The next generation of Nova is now available.  

Laravel Pulse: How's your health? Check your application's vital signs using Laravel Pulse.  

Laravel Reverb: You can easily build dynamic, real-time Laravel applications using WebSockets. Laravel Reverb is now available!  










Preface



Introduction

Quickstart

Release Notes

Upgrade Guide

Contribution Guide



Getting Started



Installation

Configuration

Homestead

Request Lifecycle

Routing

Requests & Input

Views & Responses

Controllers

Errors & Logging



Learning More



Authentication

Billing

Cache

Core Extension

Events

Facades

Forms & HTML

Helpers

IoC Container

Localization

Mail

Package Development

Pagination

Queues

Security

Session

SSH

Templates

Unit Testing

Validation



Database



Basic Usage

Query Builder

Eloquent ORM

Schema Builder

Migrations & Seeding

Redis



Artisan CLI



Overview

Development



 





 












exclamation  


WARNING You're browsing the documentation for an old version of Laravel.  Consider upgrading your project to Laravel 11.x.  




Laravel Quickstart



Installation

Local Development Environment

Routing

Creating A View

Creating A Migration

Eloquent ORM

Displaying Data

Deploying Your Application


Installation

Via Laravel Installer


First, download the Laravel installer using Composer.
composer global require "laravel/installer=~1.1"

Make sure to place the ~/.composer/vendor/bin directory in your PATH (orC:\%HOMEPATH%\AppData\Roaming\Composer\vendor\bin if working with Windows) so the laravel executable is found when you run the laravel command in your terminal.

Once installed, the simple laravel new command will create a fresh Laravel installation in the directory you specify. For instance, laravel new blog would create a directory named blog containing a fresh Laravel installation with all dependencies installed. This method of installation is much faster than installing via Composer.

Via Composer


The Laravel framework utilizes Composer for installation and dependency management. If you haven't already, start by installing Composer.

Now you can install Laravel by issuing the following command from your terminal:
composer create-project laravel/laravel your-project-name 4.2.*

This command will download and install a fresh copy of Laravel in a new your-project-name folder within your current directory.

If you prefer, you can alternatively download a copy of the Laravel repository from GitHub manually. Next run the composer install command in the root of your manually created project directory. This command will download and install the framework's dependencies.

Permissions


After installing Laravel, you may need to grant the web server write permissions to the app/storage directories. See the Installation documentation for more details on configuration.

Serving Laravel


Typically, you may use a web server such as Apache or Nginx to serve your Laravel applications. If you are on PHP 5.4+ and would like to use PHP's built-in development server, you may use the serve Artisan command:
php artisan serve

By default the HTTP-server will listen to port 8000. However if that port is already in use or you wish to serve multiple applications this way, you might want to specify what port to use. Just add the --port argument:
php artisan serve --port=8080

Directory Structure


After installing the framework, take a glance around the project to familiarize yourself with the directory structure. The app directory contains folders such as views, controllers, and models. Most of your application's code will reside somewhere in this directory. You may also wish to explore the app/config directory and the configuration options that are available to you.

Local Development Environment


In the past, configuring a local PHP development environment on your machine was a headache. Installing the proper version of PHP, required extensions, and other needed components is time consuming and confusing. Instead, consider using Laravel Homestead. Homestead is a simple virtual machine designed for Laravel and Vagrant. Since the Homestead Vagrant box is pre-packaged with all of the software you need to build robust PHP applications, you can create a virtualized, isolated development environment in seconds. Here is a list of some of the goodies included with Homestead:


Nginx

PHP 5.6

MySQL

Redis

Memcached

Beanstalk


Don't worry, even though "virtualized" sounds complicated, it's painless. VirtualBox and Vagrant, which are Homestead's two dependencies, both include simple, graphical installers for all popular operating systems. Check out the Homestead documentation to get started.

Routing


To get started, let's create our first route. In Laravel, the simplest route is a route to a Closure. Pop open the app/routes.php file and add the following route to the bottom of the file:
Route::get('users', function()
{
return 'Users!';
});

Now, if you hit the /users route in your web browser, you should see Users! displayed as the response. Great! You've just created your first route.

Routes can also be attached to controller classes. For example:
Route::get('users', 'UserController@getIndex');

This route informs the framework that requests to the /users route should call the getIndex method on the UserController class. For more information on controller routing, check out the controller documentation.

Creating A View


Next, we'll create a simple view to display our user data. Views live in the app/views directory and contain the HTML of your application. We're going to place two new views in this directory: layout.blade.php and users.blade.php. First, let's create our layout.blade.php file:
<html>
<body>
<h1>Laravel Quickstart</h1>
 
@yield('content')
</body>
</html>

Next, we'll create our users.blade.php view:
@extends('layout')
 
@section('content')
Users!
@stop

Some of this syntax probably looks quite strange to you. That's because we're using Laravel's templating system: Blade. Blade is very fast, because it is simply a handful of regular expressions that are run against your templates to compile them to pure PHP. Blade provides powerful functionality like template inheritance, as well as some syntax sugar on typical PHP control structures such as ifand for. Check out the Blade documentation for more details.

Now that we have our views, let's return it from our /users route. Instead of returning Users! from the route, return the view instead:
Route::get('users', function()
{
return View::make('users');
});

Wonderful! Now you have setup a simple view that extends a layout. Next, let's start working on our database layer.

Creating A Migration


To create a table to hold our data, we'll use the Laravel migration system. Migrations let you expressively define modifications to your database, and easily share them with the rest of your team.

First, let's configure a database connection. You may configure all of your database connections from the app/config/database.php file. By default, Laravel is configured to use MySQL, and you will need to supply connection credentials within the database configuration file. If you wish, you may change the driver option to sqlite and it will use the SQLite database included in the app/database directory.

Next, to create the migration, we'll use the Artisan CLI. From the root of your project, run the following from your terminal:
php artisan migrate:make create_users_table

Next, find the generated migration file in the app/database/migrations folder. This file contains a class with two methods: upand down. In the upmethod, you should make the desired changes to your database tables, and in the down method you simply reverse them.

Let's define a migration that looks like this:
public function up()
{
Schema::create('users', function($table)
{
$table->increments('id');
$table->string('email')->unique();
$table->string('name');
$table->timestamps();
});
}
 
public function down()
{
Schema::drop('users');
}

Next, we can run our migrations from our terminal using the migrate command. Simply execute this command from the root of your project:
php artisan migrate

If you wish to rollback a migration, you may issue the migrate:rollback command. Now that we have a database table, let's start pulling some data!

Eloquent ORM


Laravel ships with a superb ORM: Eloquent. If you have used the Ruby on Rails framework, you will find Eloquent familiar, as it follows the ActiveRecord ORM style of database interaction.

First, let's define a model. An Eloquent model can be used to query an associated database table, as well as represent a given row within that table. Don't worry, it will all make sense soon! Models are typically stored in the app/models directory. Let's define a User.php model in that directory like so:
class User extends Eloquent {}

Note that we do not have to tell Eloquent which table to use. Eloquent has a variety of conventions, one of which is to use the plural form of the model name as the model's database table. Convenient!

Using your preferred database administration tool, insert a few rows into your users table, and we'll use Eloquent to retrieve them and pass them to our view.

Now let's modify our /users route to look like this:
Route::get('users', function()
{
$users = User::all();
 
return View::make('users')->with('users', $users);
});

Let's walk through this route. First, the all method on the User model will retrieve all of the rows in the users table. Next, we're passing these records to the view via the with method. The with method accepts a key and a value, and is used to make a piece of data available to a view.

Awesome. Now we're ready to display the users in our view!

Displaying Data


Now that we have made the users available to our view, we can display them like so:
@extends('layout')
 
@section('content')
@foreach($users as $user)
<p>{{ $user->name }}</p>
@endforeach
@stop

You may be wondering where to find our echo statements. When using Blade, you may echo data by surrounding it with double curly braces. It's a cinch. Now, you should be able to hit the /users route and see the names of your users displayed in the response.

This is just the beginning. In this tutorial, you've seen the very basics of Laravel, but there are so many more exciting things to learn. Keep reading through the documentation and dig deeper into the powerful features available to you in Eloquent and Blade. Or, maybe you're more interested in Queues and Unit Testing. Then again, maybe you want to flex your architecture muscles with the IoC Container. The choice is yours!

Deploying Your Application


One of Laravel's goals is to make PHP application development enjoyable from download to deploy, and Laravel Forge provides a simple way to deploy your Laravel applications onto blazing fast servers. Forge can configure and provision servers on DigitalOcean, Linode, Rackspace, and Amazon EC2. Like Homestead, all of the latest goodies are included: Nginx, PHP 5.6, MySQL, Postgres, Redis, Memcached, and more. Forge "Quick Deploy" can even deploy your code for you each time you push changes out to GitHub or Bitbucket!

On top of that, Forge can help you configure queue workers, SSL, Cron jobs, sub-domains, and more. For more information, visit the Forge website.
 



Laravel


Laravel is a web application framework with expressive, elegant syntax. We believe development must  be an enjoyable and creative experience to be truly fulfilling. Laravel attempts to take the pain  out of development by easing common tasks used in most web projects.





YouTube


Highlights  


Release Notes  

Getting Started  

Routing  

Blade Templates  

Authentication  

Authorization  

Artisan Console  

Database  

Eloquent ORM  

Testing  




Resources  


Laravel Bootcamp  

Laracasts  

Laravel News  

Laracon  

Laracon AU  

Laracon EU  

Laracon India  

Larabelles  

Careers  

Jobs  

Forums  

Trademark  




Partners  


Vehikl  

WebReinvent  

Tighten  

Bacancy  

64 Robots  

Active Logic  

Black Airplane  

Byte 5  

Curotec  

Cyber-Duck  

DevSquad  

Jump24  

Kirschbaum  




Ecosystem  


Breeze  

Cashier  

Dusk  

Echo  

Envoyer  

Forge  

Herd  

Horizon  

Inertia  

Jetstream  

Livewire  

Nova  

Octane  

Pennant  

Pint  

Prompts  

Pulse  

Reverb  

Sail  

Sanctum  

Scout  

Socialite  

Spark  

Telescope  

Vapor  






Laravel is a Trademark of Laravel Holdings Inc.
 Copyright © 2011-2024 Laravel Holdings Inc.  

Code highlighting provided by Torchlight