Laravel

From Adam Colton
Revision as of 22:15, 22 January 2016 by Adamcolton (talk | contribs) (→Eloquent)
Jump to navigation Jump to search

Implicit Route Binding

From this video

 Route::get('users/{user}', function(App\User $user){
   return $user;
 });

If the arg name matches the token, it will magic that value into place. With the type hinting, it will find a user with the primary key given in the url.

To use something other than the primary key, you have to add a route binding in RouteServiceProvider.

Auth

Video

 php artisan make:auth

Creates a bunch of views, routes and adds a controller.

Email

Easiest is to use 'sendmail'. Make sure to set 'from' in config/mail.php.

Homestead

I'll need to try setting up a homestead instance on AWS with Vagrant. Could be useful to know for other projects too.

Illuminate/html

 composer require illuminate/html

Then in config/app.php, add 'Illuminate\Html\HtmlServiceProvider' to the providers array and 'Form' => 'Illuminate\Html\FormFacade' to the aliases array.

This seems to be the most up-to-date documentation.

Request

 $input = Request::all();
 $foo = Request::get('foo');

Gets all inputs from get and post.

Good shorthand

 $input = Request::all();
 SomeModel::create($input);

Eloquent

The $fillable property limits which properties can be assigned.

Accessors and Mutators

Accessors modify data coming from the database before it's inserted in the model. Mutators modify it before inserting.

A mutator method must have a name following the pattern setFieldNameAttribute

Query Scope

Name is scopeName, takes a query as an arg. Useful for attaching repeated query logic to the model.

Relationships

One-to-many (author to article)

 //in the 'one' (author)
 public function articles(){
   return $this->hasMany('App\Articles');
 }
 
 //in the 'many' (article)
 public function author(){
   return $this->belongsTo('App\user');
 }

Many-to-many

Form Requests

 php artisan make:requestion NameOfRequest

Starts with the methods authorize and rules.

Rules returns an array of fields and their validation logic.

Validators

  • required
  • min:n
  • date

Authorize returns a bool.

If validation fails, it's redirected back to the previous page with $errors populated with proper errors.

Form requests are implemented with type hinting on the controller.

The controller method looks like this:

 public function someMethod(SomeRequest $request){
   Model::create(request->all());
   return redirect('someplace');
 }

Direct Validation

Rather than creating a form request, we can do this

 public function someMethod(Request $request){
   $this->validate($request, ['title' => 'required|min:3']);
   Model::create(request->all());
   return redirect('someplace');
 }

Routes

 php artisan route:list

Shows a table of the routes.

Route Resource

Implements restful crud.

Research These