<?xml version="1.0" encoding="utf-8"?>
<!-- generator="Joomla! - Open Source Content Management" -->
<feed xmlns="http://www.w3.org/2005/Atom"  xml:lang="pt-br">
	<title type="text">Tutoriais - RibaFS Portal</title>
	<subtitle type="text">Servidores linux, Programação web (PHP, Joomla, CakePHP, Laravel), Programação Mobile (Phaser, PhoneGap, Monaca, Unity, etc) entre outros.</subtitle>
	<link rel="alternate" type="text/html" href="http://backup"/>
	<id>http://backup/portal/frameworks/laravel-5/tutoriais.feed</id>
	<updated>2019-09-07T19:00:45-03:00</updated>
	<author>
		<name>RibaFS Portal</name>
	</author>
	<generator uri="https://www.joomla.org">Joomla! - Open Source Content Management</generator>
	<link rel="self" type="application/atom+xml" href="http://backup/portal/frameworks/laravel-5/tutoriais.feed?type=atom"/>
	<entry>
		<title>Crud-generator</title>
		<link rel="alternate" type="text/html" href="http://backup/portal/frameworks/laravel-5/tutoriais/crud-generator.html"/>
		<published>2017-06-25T21:08:35-03:00</published>
		<updated>2017-06-25T21:08:35-03:00</updated>
		<id>http://backup/portal/frameworks/laravel-5/tutoriais/crud-generator.html</id>
		<author>
			<name>Ribamar FS</name>
		</author>
		<summary type="html">&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;Gerador de Cruds para o Laravel 5&lt;/strong&gt;&lt;/p&gt;

&lt;p style=&quot;text-align: justify;&quot;&gt;Depois de muito procurar e testar pacotes para geração de crud, encontrei este, que funciona bem e ajuda muito na criação de CRUDs básicos, já com o Bootstrap, paginação e busca.&lt;/p&gt;

&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;https://github.com/appzcoder/crud-generator&quot;&gt;https://github.com/appzcoder/crud-generator&lt;/a&gt;&lt;/p&gt;

&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;Passos para a instalação&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;composer require appzcoder/crud-generator --dev&lt;br /&gt;&lt;br /&gt;Em app/Providers/AppServiceProvider.php:&lt;br /&gt;&lt;br /&gt;public function register()&lt;br /&gt;{&lt;br /&gt;    if ($this-&amp;gt;app-&amp;gt;environment() == 'local') {&lt;br /&gt;        $this-&amp;gt;app-&amp;gt;register('Appzcoder\CrudGenerator\CrudGeneratorServiceProvider');&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;composer require laravelcollective/html&lt;br /&gt;&lt;br /&gt;Add Provider config/app.php&lt;br /&gt;&lt;br /&gt;        Collective\Html\HtmlServiceProvider::class,&lt;br /&gt;&lt;br /&gt;Aliases&lt;br /&gt;&lt;br /&gt;        'Form' =&amp;gt; Collective\Html\FormFacade::class,&lt;br /&gt;        'HTML' =&amp;gt; Collective\Html\HtmlFacade::class,&lt;br /&gt;&lt;br /&gt;composer dump-autoload&lt;br /&gt;&lt;br /&gt;Publicar o pacote do vendor:&lt;br /&gt;php artisan vendor:publish --provider=&quot;Appzcoder\CrudGenerator\CrudGeneratorServiceProvider&quot;&lt;/p&gt;

&lt;p style=&quot;text-align: justify;&quot;&gt;Está instalado e pronto para usar.&lt;/p&gt;

&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;strong&gt;Exemplos de uso:&lt;/strong&gt;&lt;/p&gt;

&lt;p style=&quot;text-align: justify;&quot;&gt;Posts&lt;br /&gt;php artisan crud:generate Posts --fields=&quot;user_id#integer; title#string; description#text;&quot; --view-path=&quot;&quot; --controller-namespace=&quot;&quot; --route-group=&quot;&quot;&lt;br /&gt;&lt;br /&gt;Noticias&lt;br /&gt;php artisan crud:generate Noticias --fields=&quot;usuario_id#integer; titulo#string; descricao#text;&quot; --view-path=&quot;&quot; --controller-namespace=&quot;&quot; --route-group=&quot;&quot;&lt;br /&gt;&lt;br /&gt;Posts&lt;br /&gt;php artisan crud:generate Posts --fields=&quot;title#string; content#text; category#select#options=technology,tips,health&quot; --view-path=admin --controller-namespace=Admin --route-group=admin&lt;/p&gt;

&lt;p style=&quot;text-align: justify;&quot;&gt;Comments&lt;br /&gt;php artisan crud:generate Comments --fields=&quot;post_id#integer; content#text;&quot; --view-path=&quot;&quot; --controller-namespace=&quot;&quot; --route-group=&quot;&quot;&lt;br /&gt;&lt;br /&gt;Criar banco e configurar no .env&lt;br /&gt;php artisan migrate&lt;br /&gt;&lt;br /&gt;Clientes&lt;br /&gt;php artisan crud:generate Clientes --fields=&quot;nome#string; email#string;&quot; --view-path=admin --controller-namespace=Admin --route-group=admin&lt;br /&gt;&lt;br /&gt;php artisan migrate&lt;br /&gt;&lt;br /&gt;Funcionarios&lt;br /&gt;php artisan crud:generate Funcionarios --fields=&quot;nome#string; email#string;&quot; --view-path=&quot;admin&quot; --controller-namespace=Funcionarios --route-group=admin&lt;br /&gt;Master a rota funcionarios/funcionarios, caso contrário não encontra&lt;br /&gt;&lt;br /&gt;php artisan migrate&lt;/p&gt;

&lt;p style=&quot;text-align: justify;&quot;&gt;Produtos&lt;br /&gt;php artisan crud:generate Produtos --fields=&quot;nome#string; descricao#string; preco#float&quot; --view-path=&quot;site&quot; --controller-namespace=Produtos --route-group=site&lt;br /&gt;&lt;br /&gt;Criar no raiz (fora de site ou admin)&lt;br /&gt;php artisan crud:generate Pedidos --fields=&quot;produto#string; quantidade#integer;&quot; --view-path=&quot;&quot; --controller-namespace=Pedidos --route-group=&quot;&quot;&lt;br /&gt;&lt;br /&gt;Editar a migration, para limitar o tamanho dos campos e outras características como nullable()&lt;br /&gt;&lt;br /&gt;Outros comandos (opcionais):&lt;br /&gt;php artisan crud:controller PostsController --crud-name=posts --model-name=Post --view-path=&quot;directory&quot; --route-group=admin&lt;br /&gt;&lt;br /&gt;For model:&lt;br /&gt;php artisan crud:model Post --fillable=&quot;['title', 'body']&quot;&lt;br /&gt;&lt;br /&gt;For migration:&lt;br /&gt;php artisan crud:migration posts --schema=&quot;title#string; body#text&quot;&lt;br /&gt;&lt;br /&gt;For view:&lt;br /&gt;php artisan crud:view posts --fields=&quot;title#string; body#text&quot; --view-path=&quot;directory&quot; --route-group=admin&lt;br /&gt;&lt;br /&gt;php artisan migrate&lt;br /&gt;&lt;br /&gt;Adicionando uma rota&lt;br /&gt;Route::resource('posts', 'PostsController');&lt;br /&gt;&lt;br /&gt;Supported Field Types&lt;br /&gt;&lt;br /&gt;These fields are supported for migration and view's form:&lt;br /&gt;Form Field Types:&lt;br /&gt;&lt;br /&gt;    text&lt;br /&gt;    textarea&lt;br /&gt;    password&lt;br /&gt;    email&lt;br /&gt;    number&lt;br /&gt;    date&lt;br /&gt;    datetime&lt;br /&gt;    time&lt;br /&gt;    radio&lt;br /&gt;    select&lt;br /&gt;    file&lt;br /&gt;&lt;br /&gt;Migration Field Types:&lt;br /&gt;&lt;br /&gt;    string&lt;br /&gt;    char&lt;br /&gt;    varchar&lt;br /&gt;    date&lt;br /&gt;    datetime&lt;br /&gt;    time&lt;br /&gt;    timestamp&lt;br /&gt;    text&lt;br /&gt;    mediumtext&lt;br /&gt;    longtext&lt;br /&gt;    json&lt;br /&gt;    jsonb&lt;br /&gt;    binary&lt;br /&gt;    integer&lt;br /&gt;    bigint&lt;br /&gt;    mediumint&lt;br /&gt;    tinyint&lt;br /&gt;    smallint&lt;br /&gt;    boolean&lt;br /&gt;    decimal&lt;br /&gt;    double&lt;br /&gt;    float&lt;br /&gt;    enum&lt;br /&gt;&lt;br /&gt;php artisan crud:generate Posts --fields=&quot;user_id#integer; title#string; description#text;&quot; --view-path=&quot;&quot; --controller-namespace=&quot;&quot; --route-group=&quot;&quot;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;            $table-&amp;gt;string('name')-&amp;gt;unique();&lt;br /&gt;            $table-&amp;gt;string('slug')-&amp;gt;unique();&lt;br /&gt;            $table-&amp;gt;text('description')-&amp;gt;nullable();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        Schema::create('posts', function (Blueprint $table) {&lt;br /&gt;            $table-&amp;gt;increments('id');&lt;br /&gt;&lt;br /&gt;            $table-&amp;gt;integer('user_id')-&amp;gt;unsigned();&lt;br /&gt;            $table-&amp;gt;foreign('user_id')-&amp;gt;references('id')-&amp;gt;on('users')-&amp;gt;onDelete('cascade');&lt;br /&gt;&lt;br /&gt;            $table-&amp;gt;string('title');&lt;br /&gt;            $table-&amp;gt;text('description');&lt;br /&gt;&lt;br /&gt;            $table-&amp;gt;timestamps();&lt;br /&gt;&lt;br /&gt;        });&lt;br /&gt;&lt;br /&gt;Model&lt;br /&gt;php artisan crud:model Post --fillable=&quot;['title', 'body']&quot;&lt;br /&gt;&lt;br /&gt;Migration&lt;br /&gt;php artisan crud:migration posts --schema=&quot;title#string; body#text&quot;&lt;br /&gt;&lt;br /&gt;View&lt;br /&gt;php artisan crud:view posts --fields=&quot;title#string; body#text&quot; --view-path=&quot;directory&quot; --route-group=admin&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</summary>
		<content type="html">&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;Gerador de Cruds para o Laravel 5&lt;/strong&gt;&lt;/p&gt;

&lt;p style=&quot;text-align: justify;&quot;&gt;Depois de muito procurar e testar pacotes para geração de crud, encontrei este, que funciona bem e ajuda muito na criação de CRUDs básicos, já com o Bootstrap, paginação e busca.&lt;/p&gt;

&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;https://github.com/appzcoder/crud-generator&quot;&gt;https://github.com/appzcoder/crud-generator&lt;/a&gt;&lt;/p&gt;

&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;Passos para a instalação&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;composer require appzcoder/crud-generator --dev&lt;br /&gt;&lt;br /&gt;Em app/Providers/AppServiceProvider.php:&lt;br /&gt;&lt;br /&gt;public function register()&lt;br /&gt;{&lt;br /&gt;    if ($this-&amp;gt;app-&amp;gt;environment() == 'local') {&lt;br /&gt;        $this-&amp;gt;app-&amp;gt;register('Appzcoder\CrudGenerator\CrudGeneratorServiceProvider');&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;composer require laravelcollective/html&lt;br /&gt;&lt;br /&gt;Add Provider config/app.php&lt;br /&gt;&lt;br /&gt;        Collective\Html\HtmlServiceProvider::class,&lt;br /&gt;&lt;br /&gt;Aliases&lt;br /&gt;&lt;br /&gt;        'Form' =&amp;gt; Collective\Html\FormFacade::class,&lt;br /&gt;        'HTML' =&amp;gt; Collective\Html\HtmlFacade::class,&lt;br /&gt;&lt;br /&gt;composer dump-autoload&lt;br /&gt;&lt;br /&gt;Publicar o pacote do vendor:&lt;br /&gt;php artisan vendor:publish --provider=&quot;Appzcoder\CrudGenerator\CrudGeneratorServiceProvider&quot;&lt;/p&gt;

&lt;p style=&quot;text-align: justify;&quot;&gt;Está instalado e pronto para usar.&lt;/p&gt;

&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;strong&gt;Exemplos de uso:&lt;/strong&gt;&lt;/p&gt;

&lt;p style=&quot;text-align: justify;&quot;&gt;Posts&lt;br /&gt;php artisan crud:generate Posts --fields=&quot;user_id#integer; title#string; description#text;&quot; --view-path=&quot;&quot; --controller-namespace=&quot;&quot; --route-group=&quot;&quot;&lt;br /&gt;&lt;br /&gt;Noticias&lt;br /&gt;php artisan crud:generate Noticias --fields=&quot;usuario_id#integer; titulo#string; descricao#text;&quot; --view-path=&quot;&quot; --controller-namespace=&quot;&quot; --route-group=&quot;&quot;&lt;br /&gt;&lt;br /&gt;Posts&lt;br /&gt;php artisan crud:generate Posts --fields=&quot;title#string; content#text; category#select#options=technology,tips,health&quot; --view-path=admin --controller-namespace=Admin --route-group=admin&lt;/p&gt;

&lt;p style=&quot;text-align: justify;&quot;&gt;Comments&lt;br /&gt;php artisan crud:generate Comments --fields=&quot;post_id#integer; content#text;&quot; --view-path=&quot;&quot; --controller-namespace=&quot;&quot; --route-group=&quot;&quot;&lt;br /&gt;&lt;br /&gt;Criar banco e configurar no .env&lt;br /&gt;php artisan migrate&lt;br /&gt;&lt;br /&gt;Clientes&lt;br /&gt;php artisan crud:generate Clientes --fields=&quot;nome#string; email#string;&quot; --view-path=admin --controller-namespace=Admin --route-group=admin&lt;br /&gt;&lt;br /&gt;php artisan migrate&lt;br /&gt;&lt;br /&gt;Funcionarios&lt;br /&gt;php artisan crud:generate Funcionarios --fields=&quot;nome#string; email#string;&quot; --view-path=&quot;admin&quot; --controller-namespace=Funcionarios --route-group=admin&lt;br /&gt;Master a rota funcionarios/funcionarios, caso contrário não encontra&lt;br /&gt;&lt;br /&gt;php artisan migrate&lt;/p&gt;

&lt;p style=&quot;text-align: justify;&quot;&gt;Produtos&lt;br /&gt;php artisan crud:generate Produtos --fields=&quot;nome#string; descricao#string; preco#float&quot; --view-path=&quot;site&quot; --controller-namespace=Produtos --route-group=site&lt;br /&gt;&lt;br /&gt;Criar no raiz (fora de site ou admin)&lt;br /&gt;php artisan crud:generate Pedidos --fields=&quot;produto#string; quantidade#integer;&quot; --view-path=&quot;&quot; --controller-namespace=Pedidos --route-group=&quot;&quot;&lt;br /&gt;&lt;br /&gt;Editar a migration, para limitar o tamanho dos campos e outras características como nullable()&lt;br /&gt;&lt;br /&gt;Outros comandos (opcionais):&lt;br /&gt;php artisan crud:controller PostsController --crud-name=posts --model-name=Post --view-path=&quot;directory&quot; --route-group=admin&lt;br /&gt;&lt;br /&gt;For model:&lt;br /&gt;php artisan crud:model Post --fillable=&quot;['title', 'body']&quot;&lt;br /&gt;&lt;br /&gt;For migration:&lt;br /&gt;php artisan crud:migration posts --schema=&quot;title#string; body#text&quot;&lt;br /&gt;&lt;br /&gt;For view:&lt;br /&gt;php artisan crud:view posts --fields=&quot;title#string; body#text&quot; --view-path=&quot;directory&quot; --route-group=admin&lt;br /&gt;&lt;br /&gt;php artisan migrate&lt;br /&gt;&lt;br /&gt;Adicionando uma rota&lt;br /&gt;Route::resource('posts', 'PostsController');&lt;br /&gt;&lt;br /&gt;Supported Field Types&lt;br /&gt;&lt;br /&gt;These fields are supported for migration and view's form:&lt;br /&gt;Form Field Types:&lt;br /&gt;&lt;br /&gt;    text&lt;br /&gt;    textarea&lt;br /&gt;    password&lt;br /&gt;    email&lt;br /&gt;    number&lt;br /&gt;    date&lt;br /&gt;    datetime&lt;br /&gt;    time&lt;br /&gt;    radio&lt;br /&gt;    select&lt;br /&gt;    file&lt;br /&gt;&lt;br /&gt;Migration Field Types:&lt;br /&gt;&lt;br /&gt;    string&lt;br /&gt;    char&lt;br /&gt;    varchar&lt;br /&gt;    date&lt;br /&gt;    datetime&lt;br /&gt;    time&lt;br /&gt;    timestamp&lt;br /&gt;    text&lt;br /&gt;    mediumtext&lt;br /&gt;    longtext&lt;br /&gt;    json&lt;br /&gt;    jsonb&lt;br /&gt;    binary&lt;br /&gt;    integer&lt;br /&gt;    bigint&lt;br /&gt;    mediumint&lt;br /&gt;    tinyint&lt;br /&gt;    smallint&lt;br /&gt;    boolean&lt;br /&gt;    decimal&lt;br /&gt;    double&lt;br /&gt;    float&lt;br /&gt;    enum&lt;br /&gt;&lt;br /&gt;php artisan crud:generate Posts --fields=&quot;user_id#integer; title#string; description#text;&quot; --view-path=&quot;&quot; --controller-namespace=&quot;&quot; --route-group=&quot;&quot;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;            $table-&amp;gt;string('name')-&amp;gt;unique();&lt;br /&gt;            $table-&amp;gt;string('slug')-&amp;gt;unique();&lt;br /&gt;            $table-&amp;gt;text('description')-&amp;gt;nullable();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        Schema::create('posts', function (Blueprint $table) {&lt;br /&gt;            $table-&amp;gt;increments('id');&lt;br /&gt;&lt;br /&gt;            $table-&amp;gt;integer('user_id')-&amp;gt;unsigned();&lt;br /&gt;            $table-&amp;gt;foreign('user_id')-&amp;gt;references('id')-&amp;gt;on('users')-&amp;gt;onDelete('cascade');&lt;br /&gt;&lt;br /&gt;            $table-&amp;gt;string('title');&lt;br /&gt;            $table-&amp;gt;text('description');&lt;br /&gt;&lt;br /&gt;            $table-&amp;gt;timestamps();&lt;br /&gt;&lt;br /&gt;        });&lt;br /&gt;&lt;br /&gt;Model&lt;br /&gt;php artisan crud:model Post --fillable=&quot;['title', 'body']&quot;&lt;br /&gt;&lt;br /&gt;Migration&lt;br /&gt;php artisan crud:migration posts --schema=&quot;title#string; body#text&quot;&lt;br /&gt;&lt;br /&gt;View&lt;br /&gt;php artisan crud:view posts --fields=&quot;title#string; body#text&quot; --view-path=&quot;directory&quot; --route-group=admin&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</content>
		<category term="Tutoriais" />
	</entry>
	<entry>
		<title>Migrations no Laravel</title>
		<link rel="alternate" type="text/html" href="http://backup/portal/frameworks/laravel-5/tutoriais/migrations-no-laravel.html"/>
		<published>2017-06-25T21:08:35-03:00</published>
		<updated>2017-06-25T21:08:35-03:00</updated>
		<id>http://backup/portal/frameworks/laravel-5/tutoriais/migrations-no-laravel.html</id>
		<author>
			<name>Ribamar FS</name>
		</author>
		<summary type="html">&lt;p&gt;&lt;strong&gt;Migrations é um recurso que cria a estrutura das tabelas em código e após um comando ele cria as tabelas no banco.&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;Também permite remover as tabelas do banco e recriar com grande flexibilidade.&lt;/p&gt;


&lt;p&gt;No Laravel 5 as migrations ficam no diretório&lt;br /&gt;/database/migrations&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Detalhes:&lt;/strong&gt;&lt;br /&gt;&lt;a href=&quot;https://laravel.com/docs/5.4/migrations&quot;&gt;https://laravel.com/docs/5.4/migrations&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Criar a migrate já com a estrutura básica&lt;/strong&gt;&lt;br /&gt;php artisan make:migration create_users_table --create=users&lt;br /&gt;&lt;br /&gt;Criar a primeira tabela&lt;br /&gt;php artisan make:migration create_produto_table&lt;br /&gt;&lt;br /&gt;php artisan migrate:reset - &lt;strong&gt;apagar todas as tabelas&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;php artisan migrate:refresh - &lt;strong&gt;recriar e popular todas as tabelas&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;php artisan migrate:rollback --step-1&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Após o comando mirgation, edite o arquivo gerado em database/migrations e adicione os campos da tabela.&lt;/strong&gt;&lt;br /&gt;Abrir o arquivo e criar os campos no método up:&lt;br /&gt;&lt;br /&gt;    Schema::create('produto', function(Blueprint $table){&lt;br /&gt;        $table-&amp;gt;increments('id');&lt;br /&gt;        $table-&amp;gt;string('name', 100);&lt;br /&gt;        $table-&amp;gt;integer('number');&lt;br /&gt;        $table-&amp;gt;boolean('active');&lt;br /&gt;        $table-&amp;gt;string('image', 200)-&amp;gt;nullable();        &lt;br /&gt;        $table-&amp;gt;enum('category', ['eletronicos', 'moveis', 'limpeza', 'banho']);&lt;br /&gt;        $table-&amp;gt;text('description');&lt;br /&gt;        $table-&amp;gt;timestamps();&lt;br /&gt;        $table-&amp;gt;softDeletes(); //só marca para deleção&lt;br /&gt;    });&lt;br /&gt;&lt;br /&gt;Campos date usar nullable();&lt;br /&gt;&lt;br /&gt;Método down()&lt;br /&gt;&lt;br /&gt;    Schema::drop('produto');&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Criar migration e mudar nome&lt;br /&gt;php artisan miration create_telefones_table --create telefones&lt;br /&gt;&lt;br /&gt;Criar as tabelas no banco a partir da migration&lt;br /&gt;php artisan migrate&lt;br /&gt;&lt;br /&gt;Após efetuar alterações na estrutura da tabela da migration executar:&lt;br /&gt;php artisan migrate:refresh (apaga tudo e recria)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Seeds - popular banco de dados&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;Estes populam as tabelas com dados de teste e ficam no diretório:&lt;br /&gt;database/seeds&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Detalhes:&lt;/strong&gt;&lt;br /&gt;&lt;a href=&quot;https://laravel.com/docs/5.4/seeding&quot;&gt;https://laravel.com/docs/5.4/seeding&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Sintaxe:&lt;br /&gt;php artisan make:seeder UserTableSeeder&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;use App\User;&lt;br /&gt;&lt;br /&gt;public function run(){&lt;br /&gt;    User::create([&lt;br /&gt;        'name' =&amp;gt; 'Carlos Ferreira',&lt;br /&gt;        'email' =&amp;gt; 'carlos@carlos.com',&lt;br /&gt;        'password' =&amp;gt; bcrypt('123456')&lt;br /&gt;    ])&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Editar o arquivo&lt;br /&gt;seeds/DatabaseSeeder.php&lt;br /&gt;&lt;br /&gt;E mudar a linha:&lt;br /&gt;$this-&amp;gt;call(UserTableSeeder::class);&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Criar o seed (popula todas as tabelas criadas):&lt;/strong&gt;&lt;br /&gt;php artisan db:seed&lt;br /&gt;&lt;br /&gt;Criar o model e a migration, já com parte do método up&lt;br /&gt;php artisan make:model Produtos -m&lt;br /&gt;&lt;br /&gt;php artisan help make:migration&lt;br /&gt;&lt;br /&gt;Para apagar as tabelas criadas&lt;br /&gt;php artisan migrate:reset&lt;br /&gt;&lt;br /&gt;Criar as tabelas novamente&lt;br /&gt;php artisan migrate:refresh&lt;br /&gt;&lt;br /&gt;    public function up()&lt;br /&gt;    {&lt;br /&gt;        Schema::create('livros', function(Blueprint $table) {&lt;br /&gt;            $table-&amp;gt;increments('id');&lt;br /&gt;            $table-&amp;gt;string('isbn',20);&lt;br /&gt;            $table-&amp;gt;integer('autore_id')-&amp;gt;unsigned();&lt;br /&gt;            $table-&amp;gt;string('titulo',40);&lt;br /&gt;            $table-&amp;gt;timestamps();&lt;br /&gt;            $table-&amp;gt;foreign('autore_id')-&amp;gt;references('id')-&amp;gt;on('autores')-&amp;gt;onDelete('cascade')-&amp;gt;onUpdate('cascade');&lt;br /&gt;        });&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Seed somente para uma tabela/classe&lt;/strong&gt;&lt;br /&gt;php artisan db:seed --class=UserTableSeeder&lt;br /&gt;&lt;br /&gt;Ao deletar um autor deleta todos os livros relacionados a ele (onDelete('cascade')).&lt;br /&gt;&lt;br /&gt;            $table-&amp;gt;foreign('user_id')-&amp;gt;references('id')-&amp;gt;on('users')&lt;br /&gt;                -&amp;gt;onUpdate('cascade')&lt;br /&gt;                -&amp;gt;onDelete('cascade');&lt;br /&gt;&lt;br /&gt;            $table-&amp;gt;foreign('classroom_id')-&amp;gt;references('id')-&amp;gt;on('classrooms')&lt;br /&gt;                -&amp;gt;onUpdate('cascade')&lt;br /&gt;                -&amp;gt;onDelete('set null');&lt;br /&gt;&lt;br /&gt;class CreateRolesPermissionsTables extends Migration&lt;br /&gt;{&lt;br /&gt;    /**&lt;br /&gt;     * Run the migrations.&lt;br /&gt;     *&lt;br /&gt;     * @return void&lt;br /&gt;     */&lt;br /&gt;    public function up()&lt;br /&gt;    {&lt;br /&gt;        Schema::create('roles', function (Blueprint $table) {&lt;br /&gt;            $table-&amp;gt;increments('id');&lt;br /&gt;            $table-&amp;gt;string('name');&lt;br /&gt;            $table-&amp;gt;string('label')-&amp;gt;nullable();&lt;br /&gt;            $table-&amp;gt;timestamps();&lt;br /&gt;        });&lt;br /&gt;&lt;br /&gt;        Schema::create('permissions', function (Blueprint $table) {&lt;br /&gt;            $table-&amp;gt;increments('id');&lt;br /&gt;            $table-&amp;gt;string('name');&lt;br /&gt;            $table-&amp;gt;string('label')-&amp;gt;nullable();&lt;br /&gt;            $table-&amp;gt;timestamps();&lt;br /&gt;        });&lt;br /&gt;&lt;br /&gt;        Schema::create('permission_role', function (Blueprint $table) {&lt;br /&gt;            $table-&amp;gt;integer('permission_id')-&amp;gt;unsigned();&lt;br /&gt;            $table-&amp;gt;integer('role_id')-&amp;gt;unsigned();&lt;br /&gt;&lt;br /&gt;            $table-&amp;gt;foreign('permission_id')&lt;br /&gt;                -&amp;gt;references('id')&lt;br /&gt;                -&amp;gt;on('permissions')&lt;br /&gt;                -&amp;gt;onDelete('cascade');&lt;br /&gt;&lt;br /&gt;            $table-&amp;gt;foreign('role_id')&lt;br /&gt;                -&amp;gt;references('id')&lt;br /&gt;                -&amp;gt;on('roles')&lt;br /&gt;                -&amp;gt;onDelete('cascade');&lt;br /&gt;&lt;br /&gt;            $table-&amp;gt;primary(['permission_id', 'role_id']);&lt;br /&gt;        });&lt;br /&gt;&lt;br /&gt;        Schema::create('role_user', function (Blueprint $table) {&lt;br /&gt;            $table-&amp;gt;integer('role_id')-&amp;gt;unsigned();&lt;br /&gt;            $table-&amp;gt;integer('user_id')-&amp;gt;unsigned();&lt;br /&gt;&lt;br /&gt;            $table-&amp;gt;foreign('role_id')&lt;br /&gt;                -&amp;gt;references('id')&lt;br /&gt;                -&amp;gt;on('roles')&lt;br /&gt;                -&amp;gt;onDelete('cascade');&lt;br /&gt;&lt;br /&gt;            $table-&amp;gt;foreign('user_id')&lt;br /&gt;                -&amp;gt;references('id')&lt;br /&gt;                -&amp;gt;on('users')&lt;br /&gt;                -&amp;gt;onDelete('cascade');&lt;br /&gt;&lt;br /&gt;            $table-&amp;gt;primary(['role_id', 'user_id']);&lt;br /&gt;        });&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Reverse the migrations.&lt;br /&gt;     *&lt;br /&gt;     * @return void&lt;br /&gt;     */&lt;br /&gt;    public function down()&lt;br /&gt;    {&lt;br /&gt;        Schema::drop('permission_role');&lt;br /&gt;        Schema::drop('role_user');&lt;br /&gt;        Schema::drop('roles');&lt;br /&gt;        Schema::drop('permissions');&lt;br /&gt;    }&lt;br /&gt;}&lt;/p&gt;</summary>
		<content type="html">&lt;p&gt;&lt;strong&gt;Migrations é um recurso que cria a estrutura das tabelas em código e após um comando ele cria as tabelas no banco.&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;Também permite remover as tabelas do banco e recriar com grande flexibilidade.&lt;/p&gt;


&lt;p&gt;No Laravel 5 as migrations ficam no diretório&lt;br /&gt;/database/migrations&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Detalhes:&lt;/strong&gt;&lt;br /&gt;&lt;a href=&quot;https://laravel.com/docs/5.4/migrations&quot;&gt;https://laravel.com/docs/5.4/migrations&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Criar a migrate já com a estrutura básica&lt;/strong&gt;&lt;br /&gt;php artisan make:migration create_users_table --create=users&lt;br /&gt;&lt;br /&gt;Criar a primeira tabela&lt;br /&gt;php artisan make:migration create_produto_table&lt;br /&gt;&lt;br /&gt;php artisan migrate:reset - &lt;strong&gt;apagar todas as tabelas&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;php artisan migrate:refresh - &lt;strong&gt;recriar e popular todas as tabelas&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;php artisan migrate:rollback --step-1&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Após o comando mirgation, edite o arquivo gerado em database/migrations e adicione os campos da tabela.&lt;/strong&gt;&lt;br /&gt;Abrir o arquivo e criar os campos no método up:&lt;br /&gt;&lt;br /&gt;    Schema::create('produto', function(Blueprint $table){&lt;br /&gt;        $table-&amp;gt;increments('id');&lt;br /&gt;        $table-&amp;gt;string('name', 100);&lt;br /&gt;        $table-&amp;gt;integer('number');&lt;br /&gt;        $table-&amp;gt;boolean('active');&lt;br /&gt;        $table-&amp;gt;string('image', 200)-&amp;gt;nullable();        &lt;br /&gt;        $table-&amp;gt;enum('category', ['eletronicos', 'moveis', 'limpeza', 'banho']);&lt;br /&gt;        $table-&amp;gt;text('description');&lt;br /&gt;        $table-&amp;gt;timestamps();&lt;br /&gt;        $table-&amp;gt;softDeletes(); //só marca para deleção&lt;br /&gt;    });&lt;br /&gt;&lt;br /&gt;Campos date usar nullable();&lt;br /&gt;&lt;br /&gt;Método down()&lt;br /&gt;&lt;br /&gt;    Schema::drop('produto');&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Criar migration e mudar nome&lt;br /&gt;php artisan miration create_telefones_table --create telefones&lt;br /&gt;&lt;br /&gt;Criar as tabelas no banco a partir da migration&lt;br /&gt;php artisan migrate&lt;br /&gt;&lt;br /&gt;Após efetuar alterações na estrutura da tabela da migration executar:&lt;br /&gt;php artisan migrate:refresh (apaga tudo e recria)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Seeds - popular banco de dados&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;Estes populam as tabelas com dados de teste e ficam no diretório:&lt;br /&gt;database/seeds&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Detalhes:&lt;/strong&gt;&lt;br /&gt;&lt;a href=&quot;https://laravel.com/docs/5.4/seeding&quot;&gt;https://laravel.com/docs/5.4/seeding&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Sintaxe:&lt;br /&gt;php artisan make:seeder UserTableSeeder&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;use App\User;&lt;br /&gt;&lt;br /&gt;public function run(){&lt;br /&gt;    User::create([&lt;br /&gt;        'name' =&amp;gt; 'Carlos Ferreira',&lt;br /&gt;        'email' =&amp;gt; 'carlos@carlos.com',&lt;br /&gt;        'password' =&amp;gt; bcrypt('123456')&lt;br /&gt;    ])&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Editar o arquivo&lt;br /&gt;seeds/DatabaseSeeder.php&lt;br /&gt;&lt;br /&gt;E mudar a linha:&lt;br /&gt;$this-&amp;gt;call(UserTableSeeder::class);&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Criar o seed (popula todas as tabelas criadas):&lt;/strong&gt;&lt;br /&gt;php artisan db:seed&lt;br /&gt;&lt;br /&gt;Criar o model e a migration, já com parte do método up&lt;br /&gt;php artisan make:model Produtos -m&lt;br /&gt;&lt;br /&gt;php artisan help make:migration&lt;br /&gt;&lt;br /&gt;Para apagar as tabelas criadas&lt;br /&gt;php artisan migrate:reset&lt;br /&gt;&lt;br /&gt;Criar as tabelas novamente&lt;br /&gt;php artisan migrate:refresh&lt;br /&gt;&lt;br /&gt;    public function up()&lt;br /&gt;    {&lt;br /&gt;        Schema::create('livros', function(Blueprint $table) {&lt;br /&gt;            $table-&amp;gt;increments('id');&lt;br /&gt;            $table-&amp;gt;string('isbn',20);&lt;br /&gt;            $table-&amp;gt;integer('autore_id')-&amp;gt;unsigned();&lt;br /&gt;            $table-&amp;gt;string('titulo',40);&lt;br /&gt;            $table-&amp;gt;timestamps();&lt;br /&gt;            $table-&amp;gt;foreign('autore_id')-&amp;gt;references('id')-&amp;gt;on('autores')-&amp;gt;onDelete('cascade')-&amp;gt;onUpdate('cascade');&lt;br /&gt;        });&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Seed somente para uma tabela/classe&lt;/strong&gt;&lt;br /&gt;php artisan db:seed --class=UserTableSeeder&lt;br /&gt;&lt;br /&gt;Ao deletar um autor deleta todos os livros relacionados a ele (onDelete('cascade')).&lt;br /&gt;&lt;br /&gt;            $table-&amp;gt;foreign('user_id')-&amp;gt;references('id')-&amp;gt;on('users')&lt;br /&gt;                -&amp;gt;onUpdate('cascade')&lt;br /&gt;                -&amp;gt;onDelete('cascade');&lt;br /&gt;&lt;br /&gt;            $table-&amp;gt;foreign('classroom_id')-&amp;gt;references('id')-&amp;gt;on('classrooms')&lt;br /&gt;                -&amp;gt;onUpdate('cascade')&lt;br /&gt;                -&amp;gt;onDelete('set null');&lt;br /&gt;&lt;br /&gt;class CreateRolesPermissionsTables extends Migration&lt;br /&gt;{&lt;br /&gt;    /**&lt;br /&gt;     * Run the migrations.&lt;br /&gt;     *&lt;br /&gt;     * @return void&lt;br /&gt;     */&lt;br /&gt;    public function up()&lt;br /&gt;    {&lt;br /&gt;        Schema::create('roles', function (Blueprint $table) {&lt;br /&gt;            $table-&amp;gt;increments('id');&lt;br /&gt;            $table-&amp;gt;string('name');&lt;br /&gt;            $table-&amp;gt;string('label')-&amp;gt;nullable();&lt;br /&gt;            $table-&amp;gt;timestamps();&lt;br /&gt;        });&lt;br /&gt;&lt;br /&gt;        Schema::create('permissions', function (Blueprint $table) {&lt;br /&gt;            $table-&amp;gt;increments('id');&lt;br /&gt;            $table-&amp;gt;string('name');&lt;br /&gt;            $table-&amp;gt;string('label')-&amp;gt;nullable();&lt;br /&gt;            $table-&amp;gt;timestamps();&lt;br /&gt;        });&lt;br /&gt;&lt;br /&gt;        Schema::create('permission_role', function (Blueprint $table) {&lt;br /&gt;            $table-&amp;gt;integer('permission_id')-&amp;gt;unsigned();&lt;br /&gt;            $table-&amp;gt;integer('role_id')-&amp;gt;unsigned();&lt;br /&gt;&lt;br /&gt;            $table-&amp;gt;foreign('permission_id')&lt;br /&gt;                -&amp;gt;references('id')&lt;br /&gt;                -&amp;gt;on('permissions')&lt;br /&gt;                -&amp;gt;onDelete('cascade');&lt;br /&gt;&lt;br /&gt;            $table-&amp;gt;foreign('role_id')&lt;br /&gt;                -&amp;gt;references('id')&lt;br /&gt;                -&amp;gt;on('roles')&lt;br /&gt;                -&amp;gt;onDelete('cascade');&lt;br /&gt;&lt;br /&gt;            $table-&amp;gt;primary(['permission_id', 'role_id']);&lt;br /&gt;        });&lt;br /&gt;&lt;br /&gt;        Schema::create('role_user', function (Blueprint $table) {&lt;br /&gt;            $table-&amp;gt;integer('role_id')-&amp;gt;unsigned();&lt;br /&gt;            $table-&amp;gt;integer('user_id')-&amp;gt;unsigned();&lt;br /&gt;&lt;br /&gt;            $table-&amp;gt;foreign('role_id')&lt;br /&gt;                -&amp;gt;references('id')&lt;br /&gt;                -&amp;gt;on('roles')&lt;br /&gt;                -&amp;gt;onDelete('cascade');&lt;br /&gt;&lt;br /&gt;            $table-&amp;gt;foreign('user_id')&lt;br /&gt;                -&amp;gt;references('id')&lt;br /&gt;                -&amp;gt;on('users')&lt;br /&gt;                -&amp;gt;onDelete('cascade');&lt;br /&gt;&lt;br /&gt;            $table-&amp;gt;primary(['role_id', 'user_id']);&lt;br /&gt;        });&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Reverse the migrations.&lt;br /&gt;     *&lt;br /&gt;     * @return void&lt;br /&gt;     */&lt;br /&gt;    public function down()&lt;br /&gt;    {&lt;br /&gt;        Schema::drop('permission_role');&lt;br /&gt;        Schema::drop('role_user');&lt;br /&gt;        Schema::drop('roles');&lt;br /&gt;        Schema::drop('permissions');&lt;br /&gt;    }&lt;br /&gt;}&lt;/p&gt;</content>
		<category term="Tutoriais" />
	</entry>
	<entry>
		<title>Laravel - Controller </title>
		<link rel="alternate" type="text/html" href="http://backup/portal/frameworks/laravel-5/tutoriais/laravel-controller.html"/>
		<published>2017-06-25T21:08:35-03:00</published>
		<updated>2017-06-25T21:08:35-03:00</updated>
		<id>http://backup/portal/frameworks/laravel-5/tutoriais/laravel-controller.html</id>
		<author>
			<name>Ribamar FS</name>
		</author>
		<summary type="html">&lt;p&gt;&lt;strong&gt;Controllers - Têm a responsabilidade de controlar o fluxo das informações, para as views e models.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Métodos padrões de um controller, quando criado com a opção --resource&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;index - lista todos os registros disponíveis&lt;br /&gt;create - chama a view create, que é um form (create.blade.php) para adicionar um registro&lt;br /&gt;store - armazena no banco o registro do form em create, antes validando seus campos&lt;br /&gt;show - mosra um único registro através da view show.blade.php&lt;br /&gt;edit - chama o form na view edit.blade.php para editar um registro&lt;br /&gt;update - Sua função é armazenar no banco o registro alterado na view acima&lt;br /&gt;destroy - permite excluir um registro&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Criar um controller numa pasta específica&lt;/strong&gt;&lt;br /&gt;php artisan make:controller Painel\\PainelController&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Criar controller com esqueleto de métodos default&lt;/strong&gt;&lt;br /&gt;php artisan make:controller SiteController --resource&lt;br /&gt;&lt;br /&gt;Exemplos:&lt;br /&gt;Route::get('/', 'SiteController@index');&lt;br /&gt;&lt;br /&gt;public function index()(&lt;br /&gt;{&lt;br /&gt;    return 'Home page do site';&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Route::get('contato', 'SiteController@contato');&lt;br /&gt;&lt;br /&gt;public function contato()(&lt;br /&gt;{&lt;br /&gt;    return 'Home page de contato';&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public function index(Request $request)&lt;br /&gt;{&lt;br /&gt;    return view('tarefas.index');&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Criar controle e também um método&lt;br /&gt;php artisan make:controller PhotoController --resource --model=Photo&lt;br /&gt;&lt;br /&gt;Route::resource('photo', 'PhotoController', ['only' =&amp;gt; [&lt;br /&gt;    'index', 'show'&lt;br /&gt;]]);&lt;br /&gt;&lt;br /&gt;Route::resource('photo', 'PhotoController', ['except' =&amp;gt; [&lt;br /&gt;    'create', 'store', 'update', 'destroy'&lt;br /&gt;]]);&lt;br /&gt;&lt;br /&gt;Route::put('user/{id}', 'UserController@update');&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Criar um controller SiteController&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Criar um método index() que chama a view:&lt;br /&gt;&lt;br /&gt;public function index()&lt;br /&gt;{&lt;br /&gt;    return view('welcome')&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Alterar o route&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Route::get('/', 'SiteController@index');&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Controller com Model&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;&lt;br /&gt;namespace App\Http\Controllers;&lt;br /&gt;use DB;&lt;br /&gt;use App\Carro;&lt;br /&gt;&lt;br /&gt;class ProdutosController extends Controller&lt;br /&gt;{&lt;br /&gt;    public function index()&lt;br /&gt;    {&lt;br /&gt;        // Retornar todos os registros da tabela carros&lt;br /&gt;        $carros = Carro-&amp;gt;get();    &lt;br /&gt;        return view('index', ['carros' =&amp;gt; $carros]);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;namespace App\Http\Controllers;&lt;br /&gt;use DB;&lt;br /&gt;&lt;br /&gt;class ProdutosController extends Controller&lt;br /&gt;{&lt;br /&gt;    public function index()&lt;br /&gt;    {&lt;br /&gt;        // Retornar todos os registros da tabela carros&lt;br /&gt;        $carros = DB::table('carros')-&amp;gt;get();    &lt;br /&gt;        return view('index', ['carros' =&amp;gt; $carros]);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;//Adicionando novo registro&lt;br /&gt;public function store(Request $request)&lt;br /&gt;{&lt;br /&gt;    $this-&amp;gt;validate($request, [&lt;br /&gt;        'name' =&amp;gt; 'required|max:255',&lt;br /&gt;    ]);&lt;br /&gt;&lt;br /&gt;    // Create The Task...&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public function store(Request $request)&lt;br /&gt;{&lt;br /&gt;    $this-&amp;gt;validate($request, [&lt;br /&gt;        'name' =&amp;gt; 'required|max:255',&lt;br /&gt;    ]);&lt;br /&gt;&lt;br /&gt;    $request-&amp;gt;user()-&amp;gt;tasks()-&amp;gt;create([&lt;br /&gt;        'name' =&amp;gt; $request-&amp;gt;name,&lt;br /&gt;    ]);&lt;br /&gt;&lt;br /&gt;    return redirect('/tasks');&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Criando uma pasta para controllers e movendo para ela um controller&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Http&lt;br /&gt;    Painel&lt;br /&gt;    Site&lt;br /&gt;        SiteController.php&lt;br /&gt;&lt;br /&gt;Mudar o namespace do controller&lt;br /&gt;&lt;br /&gt;namespace App\Http\Controllers\Site;&lt;br /&gt;&lt;br /&gt;use App\Http\Controllers\Controller;&lt;br /&gt;&lt;br /&gt;Mudar o namespace nas rotas&lt;br /&gt;&lt;br /&gt;Route::get('/', 'Site\SiteController@index');&lt;br /&gt;&lt;br /&gt;Ou criar uma rota de grupo com o novo namespace&lt;br /&gt;&lt;br /&gt;Route::group(['namespace' =&amp;gt; 'site'], function(){&lt;br /&gt;    Route::get('/', 'SiteController@index');&lt;br /&gt;    Route::get('contato', 'SiteController@contato')-&amp;gt;middleware('auth');&lt;br /&gt;});&lt;br /&gt;&lt;br /&gt;Assim todos os métodos/rotas exigem autenticação&lt;br /&gt;public function __construct()&lt;br /&gt;{&lt;br /&gt;    $this-&amp;gt;middleware('auth');&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Ou&lt;br /&gt;Somente alguns métodos/rotas exigirão autenticação&lt;br /&gt;    $this-&amp;gt;middleware('auth')&lt;br /&gt;            -&amp;gt;only([&lt;br /&gt;                'contato',&lt;br /&gt;                'categoria'&lt;br /&gt;            ]);&lt;br /&gt;&lt;br /&gt;Ou filtrando com except&lt;br /&gt;    $this-&amp;gt;middleware('auth')&lt;br /&gt;            -&amp;gt;except([&lt;br /&gt;                'contato',&lt;br /&gt;                'index'&lt;br /&gt;            ]);&lt;br /&gt;&lt;br /&gt;Adicionar outro controller, adicionando seu namespace&lt;br /&gt;public function store(Request $request, \App\User $user)&lt;br /&gt;{&lt;br /&gt;    &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public function index()&lt;br /&gt;{&lt;br /&gt;    $teste = 123;&lt;br /&gt;    $teste2 = 132;&lt;br /&gt;    $teste3 = 321;&lt;br /&gt;    return view('teste', compact('teste', 'teste2', 'teste3'));&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Ao criar as views, criar pastas correspondentes às dos controllers:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;painel&lt;br /&gt;site&lt;br /&gt;&lt;br /&gt;    return view('site.teste', compact('teste', 'teste2', 'teste3'));&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Criar formulário de cadastro&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Criar nova rota (mudar para que esta seja a primeira rota)&lt;br /&gt;&lt;br /&gt;Route::get('produtos/testes', 'Produtos\ProdutoController@testes');&lt;br /&gt;&lt;br /&gt;Editar o controller e adicionar o método testes()&lt;br /&gt;&lt;br /&gt;Adicionar use do Model no controller:&lt;br /&gt;use App\Models\Produto;&lt;br /&gt;&lt;br /&gt;Adicionar construtor&lt;br /&gt;&lt;br /&gt;private $produto;&lt;br /&gt;&lt;br /&gt;public function __construct(Produto $produto)&lt;br /&gt;{&lt;br /&gt;    $this-&amp;gt;produto = $produto;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;O index muda para:&lt;br /&gt;&lt;br /&gt;public function index()&lt;br /&gt;{&lt;br /&gt;    $produtos = $this-&amp;gt;produto-&amp;gt;all();&lt;br /&gt;    return view('produtos.index');&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Criar método teste&lt;br /&gt;&lt;br /&gt;public function testes()&lt;br /&gt;{&lt;br /&gt;    $prod = $this-&amp;gt;produto;&lt;br /&gt;    $prod-&amp;gt;nome = 'Nome do produto';&lt;br /&gt;    $prod-&amp;gt;number = 123432;&lt;br /&gt;    $prod-&amp;gt;active = true;&lt;br /&gt;    $prod-&amp;gt;category = 'eletronicos';&lt;br /&gt;    $prod-&amp;gt;description = 'Descrição do produto';&lt;br /&gt;    $insert = $prod-&amp;gt;save();&lt;br /&gt;&lt;br /&gt;    if ($insert)&lt;br /&gt;        return 'Inserido com sucesso';&lt;br /&gt;    else&lt;br /&gt;        return 'Falha ao inserir';&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Outra forma:&lt;br /&gt;&lt;br /&gt;    $this-&amp;gt;produto-&amp;gt;insert([&lt;br /&gt;        'nome' =&amp;gt; 'Nome do produto',&lt;br /&gt;        'number' =&amp;gt;&lt;br /&gt;        ...&lt;br /&gt;    ])&lt;br /&gt;&lt;br /&gt;Existem vários métodos assim: create(), &lt;br /&gt;&lt;br /&gt;O create é importante pois obriga a existência de uma relação de colunas a adicionar ao banco&lt;br /&gt;A relação de campos a serem preenchidos fica no model, assim:&lt;br /&gt;&lt;br /&gt;protected $fillable = [&lt;br /&gt;    'nome', 'number', 'active', 'categoty', 'description'&lt;br /&gt;];&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update do registro 5&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;$prod = $this-&amp;gt;produto-&amp;gt;find(5);&lt;br /&gt;&lt;br /&gt;Debugar&lt;br /&gt;&lt;br /&gt;dd($prod); // Não precisa de exit&lt;br /&gt;&lt;br /&gt;dd($prod-&amp;gt;nome);&lt;br /&gt;&lt;br /&gt;    $prod = $this-&amp;gt;produto-&amp;gt;find(5);&lt;br /&gt;    $prod-&amp;gt;nome = 'Nome Update';&lt;br /&gt;    $prod-&amp;gt;number = 123432;&lt;br /&gt;    $prod-&amp;gt;active = true;&lt;br /&gt;    $prod-&amp;gt;category = 'eletronicos';&lt;br /&gt;    $prod-&amp;gt;description = 'Descrição do produto';&lt;br /&gt;    $update = $prod-&amp;gt;save();&lt;br /&gt;&lt;br /&gt;    if ($update)&lt;br /&gt;        return 'Atualizado com sucesso';&lt;br /&gt;    else&lt;br /&gt;        return 'Falha ao atualizar';&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Usamos o método save() também para atualizar&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Outra forma é usando o método update() (requer lista de campos)&lt;br /&gt;&lt;br /&gt;    $prod = $this-&amp;gt;produto-&amp;gt;find(6);&lt;br /&gt;    $prod-&amp;gt;update([&lt;br /&gt;        'nome' =&amp;gt; 'Nome do produto6',&lt;br /&gt;        'number' &lt;br /&gt;        ...&lt;br /&gt;    ]);&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Outro método útil para retornar por outro campo:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;    $prod = $this-&amp;gt;produto&lt;br /&gt;            -&amp;gt;where('nome', 'João Brito')&lt;br /&gt;            -&amp;gt;where('number', 123543);&lt;br /&gt;&lt;br /&gt;Delete&lt;br /&gt;&lt;br /&gt;    $prod = $this-&amp;gt;produto-&amp;gt;find(3)-&amp;gt;delete();&lt;br /&gt;ou&lt;br /&gt;    $prod = $this-&amp;gt;produto-&amp;gt;find(6);&lt;br /&gt;    $delete = $prod-&amp;gt;delete();&lt;br /&gt;&lt;br /&gt;ou&lt;br /&gt;&lt;br /&gt;    $prod = $this-&amp;gt;produto-&amp;gt;find(6);&lt;br /&gt;    $delete = $prod-&amp;gt;destroy();&lt;br /&gt;&lt;br /&gt;ou&lt;br /&gt;    $prod = $this-&amp;gt;produto-&amp;gt;destroy(3);&lt;br /&gt;ou&lt;br /&gt;    $prod = $this-&amp;gt;produto-&amp;gt;destroy([3,5,8]);&lt;br /&gt;&lt;br /&gt;ou&lt;br /&gt;    $delete = $this-&amp;gt;produto-&amp;gt;where('number', 123654)-&amp;gt;delete();&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Melhorar CSS&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Criar paste template em views/produtos&lt;br /&gt;Criar nesta pasta o arquivo template.blade.php, contendo&lt;br /&gt;&lt;br /&gt;&amp;lt;table&amp;gt;&lt;br /&gt;    &amp;lt;head&amp;gt;&lt;br /&gt;        &amp;lt;title&amp;gt;{{$title or 'Curso de Laravel 5.3'}}&amp;lt;/title&amp;gt;&lt;br /&gt;    &amp;lt;/head&amp;gt;&lt;br /&gt;    &amp;lt;body&amp;gt;&lt;br /&gt;        @yield('content')&lt;br /&gt;&lt;br /&gt;    &amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;br /&gt;Em views/produtos criar&lt;br /&gt;index.blade.php, contendo&lt;br /&gt;&lt;br /&gt;@extends('produtos.templates.template')&lt;br /&gt;&lt;br /&gt;@section('content')&lt;br /&gt;    &amp;lt;table&amp;gt;&lt;br /&gt;        &amp;lt;tr&amp;gt;&lt;br /&gt;            &amp;lt;th&amp;gt;Nome&amp;lt;/th&amp;gt;&lt;br /&gt;            &amp;lt;th&amp;gt;Descrição&amp;lt;/th&amp;gt;&lt;br /&gt;        &amp;lt;/tr&amp;gt;&lt;br /&gt;        @foreach($produtos as $produto)&lt;br /&gt;        &amp;lt;tr&amp;gt;&lt;br /&gt;            &amp;lt;td&amp;gt;{{$produto-&amp;gt;nome}}&amp;lt;/td&amp;gt;&lt;br /&gt;            &amp;lt;td&amp;gt;{{$produto-&amp;gt;descricao}}&amp;lt;/td&amp;gt;&lt;br /&gt;        &amp;lt;/r&amp;gt;&lt;br /&gt;        @endforeach&lt;br /&gt;    &amp;lt;/table&amp;gt;&lt;br /&gt;&lt;br /&gt;@endsection&lt;br /&gt;&lt;br /&gt;No método index do controller podemos adicionar um título para a página:&lt;br /&gt;    $title = 'Listagem de produtos';&lt;br /&gt;    return view('produtos.index', compact('produtos', 'title'));&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;No controller, método create criar uma variável categoria, com um array com as categorias&lt;br /&gt;&lt;br /&gt;No método create criar também a variável $title&lt;br /&gt;&lt;br /&gt;&amp;lt;form class=&quot;form&quot; mathod=&quot;post&quot; action=&quot;{{route('produtos.store')}}&quot;&amp;gt;&lt;br /&gt;    &amp;lt;input type=&quot;hidden&quot; name=&quot;_token&quot; value=&quot;{{csrf_token}}&quot;&amp;gt;    &lt;br /&gt;    &amp;lt;input type=&quot;text&quot; name=&quot;nome&quot; placeholder=&quot;Nome:&quot; class=&quot;form-control&quot;&amp;gt;&lt;br /&gt;    &amp;lt;label&amp;gt;&lt;br /&gt;        &amp;lt;input type=&quot;checkbox&quot; name=&quot;active&quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;        Ativo?&lt;br /&gt;    &amp;lt;/label&amp;gt;&lt;br /&gt;    &amp;lt;input type=&quot;text&quot; name=&quot;number&quot; placeholder=&quot;Número:&quot; class=&quot;form-control&quot;&amp;gt;&lt;br /&gt;    &amp;lt;select name=&quot;categoria&quot; class=&quot;form-control&quot;&amp;gt;&lt;br /&gt;        &amp;lt;option value=&quot;&quot;&amp;gt;Escolha a categoria&amp;lt;/option&amp;gt;&lt;br /&gt;        @foreach($categorias as $categoria)&lt;br /&gt;            &amp;lt;option&amp;gt;{{$categoria}}&amp;lt;/opton&amp;gt;&lt;br /&gt;        @endforeach&lt;br /&gt;    &amp;lt;/select&amp;gt;&lt;br /&gt;    &amp;lt;textarea name=&quot;descricao&quot; placeholder=&quot;Descricao&quot; class=&quot;form-control&quot;&amp;gt;&amp;lt;/textarea&amp;gt;&lt;br /&gt;&amp;lt;/form&amp;gt;&lt;br /&gt;&lt;br /&gt;No Laravel Todo form precisa de um campo com o token&lt;br /&gt;&lt;br /&gt;ou substituir o campo por&lt;br /&gt;{!! csrf_field() !!}&lt;br /&gt;&lt;br /&gt;O método store&lt;br /&gt;&lt;br /&gt;public function store(Request $request)&lt;br /&gt;{&lt;br /&gt;    // Recupera todos os campos do form - $request-&amp;gt;all();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Para recuperar apenas alguns campos:&lt;br /&gt;&lt;br /&gt;    $request-&amp;gt;only(['nome', 'number']);&lt;br /&gt;&lt;br /&gt;Recupererar todos, exceto alguns:&lt;br /&gt;&lt;br /&gt;    $request-&amp;gt;except(['_token', 'categoria']);&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Recuperar apenas um campo&lt;/strong&gt;&lt;br /&gt;    $request-&amp;gt;input('nome');&lt;br /&gt;&lt;br /&gt;Recuperar campo pelo seu nome&lt;br /&gt;    $request-&amp;gt;name;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Cadastrar os dados do form na tabela&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;public function store(Request $request)&lt;br /&gt;{&lt;br /&gt;    // Pega todos os campos do form&lt;br /&gt;    $dataForm = $request-&amp;gt;except('_token');&lt;br /&gt;    &lt;br /&gt;    // Faz o cadastro&lt;br /&gt;    $insert = $this-&amp;gt;product-&amp;gt;insert($dataForm);&lt;br /&gt;&lt;br /&gt;    if($insert)&lt;br /&gt;        return redirect()-&amp;gt;route('produtos.index');&lt;br /&gt;    else&lt;br /&gt;        return redirect()-&amp;gt;back(); // Volta para onde veio&lt;br /&gt;//ou&lt;br /&gt;    //    return redirect()-&amp;gt;route('produtos.create'); // Volta para onde veio&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Para o avtive, que é requerido&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;if($dataForm['active'] == '')&lt;br /&gt;    $dataForm['active'] = 0;&lt;br /&gt;else&lt;br /&gt;    $dataForm['active'] =1;&lt;br /&gt;ou&lt;br /&gt;    $active['dataForm'] = (!isset($dataForm['active'])) ? 0 : 1;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Validação dos dados antes de submeter o form&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Validar no método store antes de inserir no banco&lt;br /&gt;&lt;br /&gt;As regras de validação devem ficar no model e não no controller&lt;br /&gt;&lt;br /&gt;Editemos o model produto e adicionemos uma variável public (também pode ser um mátodo)&lt;br /&gt;&lt;br /&gt;    public $rules = [&lt;br /&gt;        'nome' =&amp;gt; 'required|min:5|max:100',&lt;br /&gt;        'number' =&amp;gt; 'required|numeric',&lt;br /&gt;        'categoria' =&amp;gt; 'required',&lt;br /&gt;        'descricao' =&amp;gt; 'min:3|max:1000'&lt;br /&gt;    ];&lt;br /&gt;&lt;br /&gt;Adicionar ao método store, antes de inserir:&lt;br /&gt;&lt;br /&gt;$this-&amp;gt;validate($request, $this-&amp;gt;produto-&amp;gt;rules);&lt;br /&gt;&lt;br /&gt;Mostrar as mensagens de erro da validação na view create&lt;br /&gt;Logo no início do form, abaixo da tag form&lt;br /&gt;&lt;br /&gt;@if(isset($errors) &amp;amp;&amp;amp; count($errors) &amp;gt;0)&lt;br /&gt;    &amp;lt;div class=&quot;alert alert-danger&quot;&amp;gt;&lt;br /&gt;        @foreach($errors-&amp;gt;all(() as $error)&lt;br /&gt;            &amp;lt;p&amp;gt;{{$error}}&amp;lt;/p&amp;gt;&lt;br /&gt;        @endforeach&lt;br /&gt;    &amp;lt;/div&amp;gt;&lt;br /&gt;@endif&lt;br /&gt;&lt;br /&gt;Como manter os valores digitados nos campos do form após o submit?&lt;br /&gt;&lt;br /&gt;Em cada campo&lt;br /&gt;... value=&quot;{{old('nome')}}&quot;&lt;br /&gt;&lt;br /&gt;No método store, na validação podemos passar uma variável com as mensagens de erro&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;$this-&amp;gt;validate($request, $this-&amp;gt;produto-&amp;gt;rules, $messages);&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Personalizando as mensagens:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;$mensagens = [&lt;br /&gt;    'nome.required' =&amp;gt; 'Nome obrigatório',&lt;br /&gt;    'nome.min' =&amp;gt; &quot;Nome com pelo menos 3 caracteres',&lt;br /&gt;    'number.numric' =&amp;gt; 'Number precisa ser numérico' &lt;br /&gt;];&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=fPs-PlQIWaw&amp;amp;index=6&amp;amp;list=PLVSNL1PHDWvR3PeLXz6nvBkDhv1IQk4wP&quot;&gt;https://www.youtube.com/watch?v=fPs-PlQIWaw&amp;amp;index=6&amp;amp;list=PLVSNL1PHDWvR3PeLXz6nvBkDhv1IQk4wP&lt;/a&gt;&lt;/p&gt;</summary>
		<content type="html">&lt;p&gt;&lt;strong&gt;Controllers - Têm a responsabilidade de controlar o fluxo das informações, para as views e models.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Métodos padrões de um controller, quando criado com a opção --resource&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;index - lista todos os registros disponíveis&lt;br /&gt;create - chama a view create, que é um form (create.blade.php) para adicionar um registro&lt;br /&gt;store - armazena no banco o registro do form em create, antes validando seus campos&lt;br /&gt;show - mosra um único registro através da view show.blade.php&lt;br /&gt;edit - chama o form na view edit.blade.php para editar um registro&lt;br /&gt;update - Sua função é armazenar no banco o registro alterado na view acima&lt;br /&gt;destroy - permite excluir um registro&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Criar um controller numa pasta específica&lt;/strong&gt;&lt;br /&gt;php artisan make:controller Painel\\PainelController&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Criar controller com esqueleto de métodos default&lt;/strong&gt;&lt;br /&gt;php artisan make:controller SiteController --resource&lt;br /&gt;&lt;br /&gt;Exemplos:&lt;br /&gt;Route::get('/', 'SiteController@index');&lt;br /&gt;&lt;br /&gt;public function index()(&lt;br /&gt;{&lt;br /&gt;    return 'Home page do site';&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Route::get('contato', 'SiteController@contato');&lt;br /&gt;&lt;br /&gt;public function contato()(&lt;br /&gt;{&lt;br /&gt;    return 'Home page de contato';&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public function index(Request $request)&lt;br /&gt;{&lt;br /&gt;    return view('tarefas.index');&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Criar controle e também um método&lt;br /&gt;php artisan make:controller PhotoController --resource --model=Photo&lt;br /&gt;&lt;br /&gt;Route::resource('photo', 'PhotoController', ['only' =&amp;gt; [&lt;br /&gt;    'index', 'show'&lt;br /&gt;]]);&lt;br /&gt;&lt;br /&gt;Route::resource('photo', 'PhotoController', ['except' =&amp;gt; [&lt;br /&gt;    'create', 'store', 'update', 'destroy'&lt;br /&gt;]]);&lt;br /&gt;&lt;br /&gt;Route::put('user/{id}', 'UserController@update');&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Criar um controller SiteController&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Criar um método index() que chama a view:&lt;br /&gt;&lt;br /&gt;public function index()&lt;br /&gt;{&lt;br /&gt;    return view('welcome')&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Alterar o route&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Route::get('/', 'SiteController@index');&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Controller com Model&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;&lt;br /&gt;namespace App\Http\Controllers;&lt;br /&gt;use DB;&lt;br /&gt;use App\Carro;&lt;br /&gt;&lt;br /&gt;class ProdutosController extends Controller&lt;br /&gt;{&lt;br /&gt;    public function index()&lt;br /&gt;    {&lt;br /&gt;        // Retornar todos os registros da tabela carros&lt;br /&gt;        $carros = Carro-&amp;gt;get();    &lt;br /&gt;        return view('index', ['carros' =&amp;gt; $carros]);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;namespace App\Http\Controllers;&lt;br /&gt;use DB;&lt;br /&gt;&lt;br /&gt;class ProdutosController extends Controller&lt;br /&gt;{&lt;br /&gt;    public function index()&lt;br /&gt;    {&lt;br /&gt;        // Retornar todos os registros da tabela carros&lt;br /&gt;        $carros = DB::table('carros')-&amp;gt;get();    &lt;br /&gt;        return view('index', ['carros' =&amp;gt; $carros]);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;//Adicionando novo registro&lt;br /&gt;public function store(Request $request)&lt;br /&gt;{&lt;br /&gt;    $this-&amp;gt;validate($request, [&lt;br /&gt;        'name' =&amp;gt; 'required|max:255',&lt;br /&gt;    ]);&lt;br /&gt;&lt;br /&gt;    // Create The Task...&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public function store(Request $request)&lt;br /&gt;{&lt;br /&gt;    $this-&amp;gt;validate($request, [&lt;br /&gt;        'name' =&amp;gt; 'required|max:255',&lt;br /&gt;    ]);&lt;br /&gt;&lt;br /&gt;    $request-&amp;gt;user()-&amp;gt;tasks()-&amp;gt;create([&lt;br /&gt;        'name' =&amp;gt; $request-&amp;gt;name,&lt;br /&gt;    ]);&lt;br /&gt;&lt;br /&gt;    return redirect('/tasks');&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Criando uma pasta para controllers e movendo para ela um controller&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Http&lt;br /&gt;    Painel&lt;br /&gt;    Site&lt;br /&gt;        SiteController.php&lt;br /&gt;&lt;br /&gt;Mudar o namespace do controller&lt;br /&gt;&lt;br /&gt;namespace App\Http\Controllers\Site;&lt;br /&gt;&lt;br /&gt;use App\Http\Controllers\Controller;&lt;br /&gt;&lt;br /&gt;Mudar o namespace nas rotas&lt;br /&gt;&lt;br /&gt;Route::get('/', 'Site\SiteController@index');&lt;br /&gt;&lt;br /&gt;Ou criar uma rota de grupo com o novo namespace&lt;br /&gt;&lt;br /&gt;Route::group(['namespace' =&amp;gt; 'site'], function(){&lt;br /&gt;    Route::get('/', 'SiteController@index');&lt;br /&gt;    Route::get('contato', 'SiteController@contato')-&amp;gt;middleware('auth');&lt;br /&gt;});&lt;br /&gt;&lt;br /&gt;Assim todos os métodos/rotas exigem autenticação&lt;br /&gt;public function __construct()&lt;br /&gt;{&lt;br /&gt;    $this-&amp;gt;middleware('auth');&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Ou&lt;br /&gt;Somente alguns métodos/rotas exigirão autenticação&lt;br /&gt;    $this-&amp;gt;middleware('auth')&lt;br /&gt;            -&amp;gt;only([&lt;br /&gt;                'contato',&lt;br /&gt;                'categoria'&lt;br /&gt;            ]);&lt;br /&gt;&lt;br /&gt;Ou filtrando com except&lt;br /&gt;    $this-&amp;gt;middleware('auth')&lt;br /&gt;            -&amp;gt;except([&lt;br /&gt;                'contato',&lt;br /&gt;                'index'&lt;br /&gt;            ]);&lt;br /&gt;&lt;br /&gt;Adicionar outro controller, adicionando seu namespace&lt;br /&gt;public function store(Request $request, \App\User $user)&lt;br /&gt;{&lt;br /&gt;    &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public function index()&lt;br /&gt;{&lt;br /&gt;    $teste = 123;&lt;br /&gt;    $teste2 = 132;&lt;br /&gt;    $teste3 = 321;&lt;br /&gt;    return view('teste', compact('teste', 'teste2', 'teste3'));&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Ao criar as views, criar pastas correspondentes às dos controllers:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;painel&lt;br /&gt;site&lt;br /&gt;&lt;br /&gt;    return view('site.teste', compact('teste', 'teste2', 'teste3'));&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Criar formulário de cadastro&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Criar nova rota (mudar para que esta seja a primeira rota)&lt;br /&gt;&lt;br /&gt;Route::get('produtos/testes', 'Produtos\ProdutoController@testes');&lt;br /&gt;&lt;br /&gt;Editar o controller e adicionar o método testes()&lt;br /&gt;&lt;br /&gt;Adicionar use do Model no controller:&lt;br /&gt;use App\Models\Produto;&lt;br /&gt;&lt;br /&gt;Adicionar construtor&lt;br /&gt;&lt;br /&gt;private $produto;&lt;br /&gt;&lt;br /&gt;public function __construct(Produto $produto)&lt;br /&gt;{&lt;br /&gt;    $this-&amp;gt;produto = $produto;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;O index muda para:&lt;br /&gt;&lt;br /&gt;public function index()&lt;br /&gt;{&lt;br /&gt;    $produtos = $this-&amp;gt;produto-&amp;gt;all();&lt;br /&gt;    return view('produtos.index');&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Criar método teste&lt;br /&gt;&lt;br /&gt;public function testes()&lt;br /&gt;{&lt;br /&gt;    $prod = $this-&amp;gt;produto;&lt;br /&gt;    $prod-&amp;gt;nome = 'Nome do produto';&lt;br /&gt;    $prod-&amp;gt;number = 123432;&lt;br /&gt;    $prod-&amp;gt;active = true;&lt;br /&gt;    $prod-&amp;gt;category = 'eletronicos';&lt;br /&gt;    $prod-&amp;gt;description = 'Descrição do produto';&lt;br /&gt;    $insert = $prod-&amp;gt;save();&lt;br /&gt;&lt;br /&gt;    if ($insert)&lt;br /&gt;        return 'Inserido com sucesso';&lt;br /&gt;    else&lt;br /&gt;        return 'Falha ao inserir';&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Outra forma:&lt;br /&gt;&lt;br /&gt;    $this-&amp;gt;produto-&amp;gt;insert([&lt;br /&gt;        'nome' =&amp;gt; 'Nome do produto',&lt;br /&gt;        'number' =&amp;gt;&lt;br /&gt;        ...&lt;br /&gt;    ])&lt;br /&gt;&lt;br /&gt;Existem vários métodos assim: create(), &lt;br /&gt;&lt;br /&gt;O create é importante pois obriga a existência de uma relação de colunas a adicionar ao banco&lt;br /&gt;A relação de campos a serem preenchidos fica no model, assim:&lt;br /&gt;&lt;br /&gt;protected $fillable = [&lt;br /&gt;    'nome', 'number', 'active', 'categoty', 'description'&lt;br /&gt;];&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update do registro 5&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;$prod = $this-&amp;gt;produto-&amp;gt;find(5);&lt;br /&gt;&lt;br /&gt;Debugar&lt;br /&gt;&lt;br /&gt;dd($prod); // Não precisa de exit&lt;br /&gt;&lt;br /&gt;dd($prod-&amp;gt;nome);&lt;br /&gt;&lt;br /&gt;    $prod = $this-&amp;gt;produto-&amp;gt;find(5);&lt;br /&gt;    $prod-&amp;gt;nome = 'Nome Update';&lt;br /&gt;    $prod-&amp;gt;number = 123432;&lt;br /&gt;    $prod-&amp;gt;active = true;&lt;br /&gt;    $prod-&amp;gt;category = 'eletronicos';&lt;br /&gt;    $prod-&amp;gt;description = 'Descrição do produto';&lt;br /&gt;    $update = $prod-&amp;gt;save();&lt;br /&gt;&lt;br /&gt;    if ($update)&lt;br /&gt;        return 'Atualizado com sucesso';&lt;br /&gt;    else&lt;br /&gt;        return 'Falha ao atualizar';&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Usamos o método save() também para atualizar&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Outra forma é usando o método update() (requer lista de campos)&lt;br /&gt;&lt;br /&gt;    $prod = $this-&amp;gt;produto-&amp;gt;find(6);&lt;br /&gt;    $prod-&amp;gt;update([&lt;br /&gt;        'nome' =&amp;gt; 'Nome do produto6',&lt;br /&gt;        'number' &lt;br /&gt;        ...&lt;br /&gt;    ]);&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Outro método útil para retornar por outro campo:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;    $prod = $this-&amp;gt;produto&lt;br /&gt;            -&amp;gt;where('nome', 'João Brito')&lt;br /&gt;            -&amp;gt;where('number', 123543);&lt;br /&gt;&lt;br /&gt;Delete&lt;br /&gt;&lt;br /&gt;    $prod = $this-&amp;gt;produto-&amp;gt;find(3)-&amp;gt;delete();&lt;br /&gt;ou&lt;br /&gt;    $prod = $this-&amp;gt;produto-&amp;gt;find(6);&lt;br /&gt;    $delete = $prod-&amp;gt;delete();&lt;br /&gt;&lt;br /&gt;ou&lt;br /&gt;&lt;br /&gt;    $prod = $this-&amp;gt;produto-&amp;gt;find(6);&lt;br /&gt;    $delete = $prod-&amp;gt;destroy();&lt;br /&gt;&lt;br /&gt;ou&lt;br /&gt;    $prod = $this-&amp;gt;produto-&amp;gt;destroy(3);&lt;br /&gt;ou&lt;br /&gt;    $prod = $this-&amp;gt;produto-&amp;gt;destroy([3,5,8]);&lt;br /&gt;&lt;br /&gt;ou&lt;br /&gt;    $delete = $this-&amp;gt;produto-&amp;gt;where('number', 123654)-&amp;gt;delete();&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Melhorar CSS&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Criar paste template em views/produtos&lt;br /&gt;Criar nesta pasta o arquivo template.blade.php, contendo&lt;br /&gt;&lt;br /&gt;&amp;lt;table&amp;gt;&lt;br /&gt;    &amp;lt;head&amp;gt;&lt;br /&gt;        &amp;lt;title&amp;gt;{{$title or 'Curso de Laravel 5.3'}}&amp;lt;/title&amp;gt;&lt;br /&gt;    &amp;lt;/head&amp;gt;&lt;br /&gt;    &amp;lt;body&amp;gt;&lt;br /&gt;        @yield('content')&lt;br /&gt;&lt;br /&gt;    &amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;br /&gt;Em views/produtos criar&lt;br /&gt;index.blade.php, contendo&lt;br /&gt;&lt;br /&gt;@extends('produtos.templates.template')&lt;br /&gt;&lt;br /&gt;@section('content')&lt;br /&gt;    &amp;lt;table&amp;gt;&lt;br /&gt;        &amp;lt;tr&amp;gt;&lt;br /&gt;            &amp;lt;th&amp;gt;Nome&amp;lt;/th&amp;gt;&lt;br /&gt;            &amp;lt;th&amp;gt;Descrição&amp;lt;/th&amp;gt;&lt;br /&gt;        &amp;lt;/tr&amp;gt;&lt;br /&gt;        @foreach($produtos as $produto)&lt;br /&gt;        &amp;lt;tr&amp;gt;&lt;br /&gt;            &amp;lt;td&amp;gt;{{$produto-&amp;gt;nome}}&amp;lt;/td&amp;gt;&lt;br /&gt;            &amp;lt;td&amp;gt;{{$produto-&amp;gt;descricao}}&amp;lt;/td&amp;gt;&lt;br /&gt;        &amp;lt;/r&amp;gt;&lt;br /&gt;        @endforeach&lt;br /&gt;    &amp;lt;/table&amp;gt;&lt;br /&gt;&lt;br /&gt;@endsection&lt;br /&gt;&lt;br /&gt;No método index do controller podemos adicionar um título para a página:&lt;br /&gt;    $title = 'Listagem de produtos';&lt;br /&gt;    return view('produtos.index', compact('produtos', 'title'));&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;No controller, método create criar uma variável categoria, com um array com as categorias&lt;br /&gt;&lt;br /&gt;No método create criar também a variável $title&lt;br /&gt;&lt;br /&gt;&amp;lt;form class=&quot;form&quot; mathod=&quot;post&quot; action=&quot;{{route('produtos.store')}}&quot;&amp;gt;&lt;br /&gt;    &amp;lt;input type=&quot;hidden&quot; name=&quot;_token&quot; value=&quot;{{csrf_token}}&quot;&amp;gt;    &lt;br /&gt;    &amp;lt;input type=&quot;text&quot; name=&quot;nome&quot; placeholder=&quot;Nome:&quot; class=&quot;form-control&quot;&amp;gt;&lt;br /&gt;    &amp;lt;label&amp;gt;&lt;br /&gt;        &amp;lt;input type=&quot;checkbox&quot; name=&quot;active&quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;        Ativo?&lt;br /&gt;    &amp;lt;/label&amp;gt;&lt;br /&gt;    &amp;lt;input type=&quot;text&quot; name=&quot;number&quot; placeholder=&quot;Número:&quot; class=&quot;form-control&quot;&amp;gt;&lt;br /&gt;    &amp;lt;select name=&quot;categoria&quot; class=&quot;form-control&quot;&amp;gt;&lt;br /&gt;        &amp;lt;option value=&quot;&quot;&amp;gt;Escolha a categoria&amp;lt;/option&amp;gt;&lt;br /&gt;        @foreach($categorias as $categoria)&lt;br /&gt;            &amp;lt;option&amp;gt;{{$categoria}}&amp;lt;/opton&amp;gt;&lt;br /&gt;        @endforeach&lt;br /&gt;    &amp;lt;/select&amp;gt;&lt;br /&gt;    &amp;lt;textarea name=&quot;descricao&quot; placeholder=&quot;Descricao&quot; class=&quot;form-control&quot;&amp;gt;&amp;lt;/textarea&amp;gt;&lt;br /&gt;&amp;lt;/form&amp;gt;&lt;br /&gt;&lt;br /&gt;No Laravel Todo form precisa de um campo com o token&lt;br /&gt;&lt;br /&gt;ou substituir o campo por&lt;br /&gt;{!! csrf_field() !!}&lt;br /&gt;&lt;br /&gt;O método store&lt;br /&gt;&lt;br /&gt;public function store(Request $request)&lt;br /&gt;{&lt;br /&gt;    // Recupera todos os campos do form - $request-&amp;gt;all();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Para recuperar apenas alguns campos:&lt;br /&gt;&lt;br /&gt;    $request-&amp;gt;only(['nome', 'number']);&lt;br /&gt;&lt;br /&gt;Recupererar todos, exceto alguns:&lt;br /&gt;&lt;br /&gt;    $request-&amp;gt;except(['_token', 'categoria']);&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Recuperar apenas um campo&lt;/strong&gt;&lt;br /&gt;    $request-&amp;gt;input('nome');&lt;br /&gt;&lt;br /&gt;Recuperar campo pelo seu nome&lt;br /&gt;    $request-&amp;gt;name;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Cadastrar os dados do form na tabela&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;public function store(Request $request)&lt;br /&gt;{&lt;br /&gt;    // Pega todos os campos do form&lt;br /&gt;    $dataForm = $request-&amp;gt;except('_token');&lt;br /&gt;    &lt;br /&gt;    // Faz o cadastro&lt;br /&gt;    $insert = $this-&amp;gt;product-&amp;gt;insert($dataForm);&lt;br /&gt;&lt;br /&gt;    if($insert)&lt;br /&gt;        return redirect()-&amp;gt;route('produtos.index');&lt;br /&gt;    else&lt;br /&gt;        return redirect()-&amp;gt;back(); // Volta para onde veio&lt;br /&gt;//ou&lt;br /&gt;    //    return redirect()-&amp;gt;route('produtos.create'); // Volta para onde veio&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Para o avtive, que é requerido&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;if($dataForm['active'] == '')&lt;br /&gt;    $dataForm['active'] = 0;&lt;br /&gt;else&lt;br /&gt;    $dataForm['active'] =1;&lt;br /&gt;ou&lt;br /&gt;    $active['dataForm'] = (!isset($dataForm['active'])) ? 0 : 1;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Validação dos dados antes de submeter o form&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Validar no método store antes de inserir no banco&lt;br /&gt;&lt;br /&gt;As regras de validação devem ficar no model e não no controller&lt;br /&gt;&lt;br /&gt;Editemos o model produto e adicionemos uma variável public (também pode ser um mátodo)&lt;br /&gt;&lt;br /&gt;    public $rules = [&lt;br /&gt;        'nome' =&amp;gt; 'required|min:5|max:100',&lt;br /&gt;        'number' =&amp;gt; 'required|numeric',&lt;br /&gt;        'categoria' =&amp;gt; 'required',&lt;br /&gt;        'descricao' =&amp;gt; 'min:3|max:1000'&lt;br /&gt;    ];&lt;br /&gt;&lt;br /&gt;Adicionar ao método store, antes de inserir:&lt;br /&gt;&lt;br /&gt;$this-&amp;gt;validate($request, $this-&amp;gt;produto-&amp;gt;rules);&lt;br /&gt;&lt;br /&gt;Mostrar as mensagens de erro da validação na view create&lt;br /&gt;Logo no início do form, abaixo da tag form&lt;br /&gt;&lt;br /&gt;@if(isset($errors) &amp;amp;&amp;amp; count($errors) &amp;gt;0)&lt;br /&gt;    &amp;lt;div class=&quot;alert alert-danger&quot;&amp;gt;&lt;br /&gt;        @foreach($errors-&amp;gt;all(() as $error)&lt;br /&gt;            &amp;lt;p&amp;gt;{{$error}}&amp;lt;/p&amp;gt;&lt;br /&gt;        @endforeach&lt;br /&gt;    &amp;lt;/div&amp;gt;&lt;br /&gt;@endif&lt;br /&gt;&lt;br /&gt;Como manter os valores digitados nos campos do form após o submit?&lt;br /&gt;&lt;br /&gt;Em cada campo&lt;br /&gt;... value=&quot;{{old('nome')}}&quot;&lt;br /&gt;&lt;br /&gt;No método store, na validação podemos passar uma variável com as mensagens de erro&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;$this-&amp;gt;validate($request, $this-&amp;gt;produto-&amp;gt;rules, $messages);&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Personalizando as mensagens:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;$mensagens = [&lt;br /&gt;    'nome.required' =&amp;gt; 'Nome obrigatório',&lt;br /&gt;    'nome.min' =&amp;gt; &quot;Nome com pelo menos 3 caracteres',&lt;br /&gt;    'number.numric' =&amp;gt; 'Number precisa ser numérico' &lt;br /&gt;];&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=fPs-PlQIWaw&amp;amp;index=6&amp;amp;list=PLVSNL1PHDWvR3PeLXz6nvBkDhv1IQk4wP&quot;&gt;https://www.youtube.com/watch?v=fPs-PlQIWaw&amp;amp;index=6&amp;amp;list=PLVSNL1PHDWvR3PeLXz6nvBkDhv1IQk4wP&lt;/a&gt;&lt;/p&gt;</content>
		<category term="Tutoriais" />
	</entry>
	<entry>
		<title>Laravel - Model</title>
		<link rel="alternate" type="text/html" href="http://backup/portal/frameworks/laravel-5/tutoriais/laravel-model.html"/>
		<published>2017-06-25T21:08:35-03:00</published>
		<updated>2017-06-25T21:08:35-03:00</updated>
		<id>http://backup/portal/frameworks/laravel-5/tutoriais/laravel-model.html</id>
		<author>
			<name>Ribamar FS</name>
		</author>
		<summary type="html">&lt;p&gt;&lt;strong&gt;Models - lidam com código que manipula bancos de dados&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;No Laravel 5 ficam na pasta \app&lt;br /&gt;&lt;br /&gt;Cada tabela tem um model correspondente, que é usado para interagir com a tabela. Models permitem consultar a tabela e também inserir registros na mesma.&lt;br /&gt;&lt;br /&gt;Ficam em app soltos, mas podemos criar dentro de outras pastas, tendo o cuidado de alterar seu namespace&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Todo model Eloquent extend a classe&lt;/strong&gt;&lt;br /&gt;Illuminate\Database\Eloquent\Model&lt;br /&gt;&lt;br /&gt;https://www.youtube.com/watch?v=eFuhNCFrR2E&amp;amp;index=12&amp;amp;list=PLVSNL1PHDWvTQnUQjhBEzY2ZSzJTR9zcZ&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Criar uma model com o artisan&lt;/strong&gt;&lt;br /&gt;php artisan make:model Carro&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;ou para criar juntamente com a migration:&lt;/strong&gt;&lt;br /&gt;php artisan make:model Carro -m&lt;br /&gt;&lt;br /&gt;Para o laravel uma tabela &lt;strong&gt;carros&lt;/strong&gt; é representada por um model &lt;strong&gt;carro&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;O comando acima cria uma classe vazia de Model, mas é suficiente.&lt;br /&gt;&lt;br /&gt;Agora basta alterar o Controller, passando este model.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Podemos criar um diretório para os models dentro de app&lt;br /&gt;&lt;br /&gt;Então passamos este diretório no namespace do model que criamos e de outros que criarmos.&lt;br /&gt;&lt;br /&gt;php artisan make:model Produto&lt;br /&gt;&lt;br /&gt;Criar uma pasta para os models:&lt;br /&gt;&lt;br /&gt;app/Models&lt;br /&gt;&lt;br /&gt;Criar o mesmo model em app/Models (já cria com o namespace correto em models)&lt;br /&gt;php artisan make:model Models\\Produto&lt;br /&gt;&lt;br /&gt;Para uma tabela chamada produtos um model Produto.&lt;br /&gt;&lt;br /&gt;Criar também a migration:&lt;br /&gt;php artisan make:model Models\\Produto -m&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;No controller adicionar:&lt;br /&gt;&lt;br /&gt;use App\Models\Produto;&lt;br /&gt;&lt;br /&gt;public function index(Produto $produto){&lt;br /&gt;    $produtos = $produto-&amp;gt;all();&lt;br /&gt;&lt;br /&gt;    return view('produtos.index', compact('produtos'));&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Criar a view index em views/produtos/index.blade.php&lt;br /&gt;&lt;br /&gt;&amp;lt;h1&amp;gt;Listagem de Produtos&amp;lt;/h1&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;table&amp;gt;&lt;br /&gt;    &amp;lt;tr&amp;gt;&lt;br /&gt;        &amp;lt;th&amp;gt;Nome&amp;lt;/th&amp;gt;&lt;br /&gt;        &amp;lt;th&amp;gt;Descrição&amp;lt;/th&amp;gt;&lt;br /&gt;    &amp;lt;/tr&amp;gt;&lt;br /&gt;    @foreach($produtos as $produto)&lt;br /&gt;    &amp;lt;tr&amp;gt;&lt;br /&gt;        &amp;lt;td&amp;gt;{{$produto-&amp;gt;nome}}&amp;lt;/td&amp;gt;&lt;br /&gt;        &amp;lt;td&amp;gt;{{$produto-&amp;gt;descricao}}&amp;lt;/td&amp;gt;&lt;br /&gt;    &amp;lt;/r&amp;gt;&lt;br /&gt;    @endforeach&lt;br /&gt;&amp;lt;/table&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Criar uma rota para produtos&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Route::resource('produtos', 'Produtos\ProdutoController');&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</summary>
		<content type="html">&lt;p&gt;&lt;strong&gt;Models - lidam com código que manipula bancos de dados&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;No Laravel 5 ficam na pasta \app&lt;br /&gt;&lt;br /&gt;Cada tabela tem um model correspondente, que é usado para interagir com a tabela. Models permitem consultar a tabela e também inserir registros na mesma.&lt;br /&gt;&lt;br /&gt;Ficam em app soltos, mas podemos criar dentro de outras pastas, tendo o cuidado de alterar seu namespace&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Todo model Eloquent extend a classe&lt;/strong&gt;&lt;br /&gt;Illuminate\Database\Eloquent\Model&lt;br /&gt;&lt;br /&gt;https://www.youtube.com/watch?v=eFuhNCFrR2E&amp;amp;index=12&amp;amp;list=PLVSNL1PHDWvTQnUQjhBEzY2ZSzJTR9zcZ&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Criar uma model com o artisan&lt;/strong&gt;&lt;br /&gt;php artisan make:model Carro&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;ou para criar juntamente com a migration:&lt;/strong&gt;&lt;br /&gt;php artisan make:model Carro -m&lt;br /&gt;&lt;br /&gt;Para o laravel uma tabela &lt;strong&gt;carros&lt;/strong&gt; é representada por um model &lt;strong&gt;carro&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;O comando acima cria uma classe vazia de Model, mas é suficiente.&lt;br /&gt;&lt;br /&gt;Agora basta alterar o Controller, passando este model.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Podemos criar um diretório para os models dentro de app&lt;br /&gt;&lt;br /&gt;Então passamos este diretório no namespace do model que criamos e de outros que criarmos.&lt;br /&gt;&lt;br /&gt;php artisan make:model Produto&lt;br /&gt;&lt;br /&gt;Criar uma pasta para os models:&lt;br /&gt;&lt;br /&gt;app/Models&lt;br /&gt;&lt;br /&gt;Criar o mesmo model em app/Models (já cria com o namespace correto em models)&lt;br /&gt;php artisan make:model Models\\Produto&lt;br /&gt;&lt;br /&gt;Para uma tabela chamada produtos um model Produto.&lt;br /&gt;&lt;br /&gt;Criar também a migration:&lt;br /&gt;php artisan make:model Models\\Produto -m&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;No controller adicionar:&lt;br /&gt;&lt;br /&gt;use App\Models\Produto;&lt;br /&gt;&lt;br /&gt;public function index(Produto $produto){&lt;br /&gt;    $produtos = $produto-&amp;gt;all();&lt;br /&gt;&lt;br /&gt;    return view('produtos.index', compact('produtos'));&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Criar a view index em views/produtos/index.blade.php&lt;br /&gt;&lt;br /&gt;&amp;lt;h1&amp;gt;Listagem de Produtos&amp;lt;/h1&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;table&amp;gt;&lt;br /&gt;    &amp;lt;tr&amp;gt;&lt;br /&gt;        &amp;lt;th&amp;gt;Nome&amp;lt;/th&amp;gt;&lt;br /&gt;        &amp;lt;th&amp;gt;Descrição&amp;lt;/th&amp;gt;&lt;br /&gt;    &amp;lt;/tr&amp;gt;&lt;br /&gt;    @foreach($produtos as $produto)&lt;br /&gt;    &amp;lt;tr&amp;gt;&lt;br /&gt;        &amp;lt;td&amp;gt;{{$produto-&amp;gt;nome}}&amp;lt;/td&amp;gt;&lt;br /&gt;        &amp;lt;td&amp;gt;{{$produto-&amp;gt;descricao}}&amp;lt;/td&amp;gt;&lt;br /&gt;    &amp;lt;/r&amp;gt;&lt;br /&gt;    @endforeach&lt;br /&gt;&amp;lt;/table&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Criar uma rota para produtos&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Route::resource('produtos', 'Produtos\ProdutoController');&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</content>
		<category term="Tutoriais" />
	</entry>
	<entry>
		<title>Laravel - View</title>
		<link rel="alternate" type="text/html" href="http://backup/portal/frameworks/laravel-5/tutoriais/laravel-view.html"/>
		<published>2017-06-25T21:08:35-03:00</published>
		<updated>2017-06-25T21:08:35-03:00</updated>
		<id>http://backup/portal/frameworks/laravel-5/tutoriais/laravel-view.html</id>
		<author>
			<name>Ribamar FS</name>
		</author>
		<summary type="html">&lt;p&gt;&lt;strong&gt;Views - camada de apresentação, que mostra os dados para o usuário, geralmente como HTML&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Para usar facade de Forms e HTML no laravel 5 execute:&lt;br /&gt;&lt;br /&gt;composer require Collective\Html&lt;br /&gt;&lt;br /&gt;Adicionar ao require do composer.json:&lt;br /&gt;        &quot;laravelcollective/html&quot;: &quot;5.4.6&quot;&lt;br /&gt;&lt;br /&gt;composer update&lt;br /&gt;&lt;br /&gt;Adicionar na seção provider de config/app.php a linha&lt;br /&gt;&lt;br /&gt;Collective\Html\HtmlServiceProvider::class,&lt;br /&gt;&lt;br /&gt;E na seção aliases de config/app.php:&lt;br /&gt;&lt;br /&gt;'Form'     =&amp;gt; Collective\Html\FormFacade::class,&lt;br /&gt;'Html'     =&amp;gt; Collective\Html\HtmlFacade::class,&lt;br /&gt;&lt;br /&gt;Depois disso podemos criar forms assim:&lt;br /&gt;&lt;br /&gt;{!! Form::open([&lt;br /&gt;    'route' =&amp;gt; 'tasks.store'&lt;br /&gt;]) !!}&lt;br /&gt;&lt;br /&gt;&amp;lt;div class=&quot;form-group&quot;&amp;gt;&lt;br /&gt;    {!! Form::label('title', 'Title:', ['class' =&amp;gt; 'control-label']) !!}&lt;br /&gt;    {!! Form::text('title', null, ['class' =&amp;gt; 'form-control']) !!}&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;div class=&quot;form-group&quot;&amp;gt;&lt;br /&gt;    {!! Form::label('description', 'Description:', ['class' =&amp;gt; 'control-label']) !!}&lt;br /&gt;    {!! Form::textarea('description', null, ['class' =&amp;gt; 'form-control']) !!}&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;{!! Form::submit('Create New Task', ['class' =&amp;gt; 'btn btn-primary']) !!}&lt;br /&gt;{!! Form::close() !!}&lt;br /&gt;&lt;br /&gt;if(view()-&amp;gt;exists('clientes.store')){&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;{{ $nome or 'Valor Default'}}&lt;br /&gt;&lt;br /&gt;Dados sem caracteres de scape&lt;br /&gt;&lt;br /&gt;Olá, {!! $nome !!}&lt;br /&gt;&lt;br /&gt;Formato de data&lt;br /&gt;&lt;br /&gt;echo with($var)-&amp;gt;format('d/m/Y H:i');&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</summary>
		<content type="html">&lt;p&gt;&lt;strong&gt;Views - camada de apresentação, que mostra os dados para o usuário, geralmente como HTML&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Para usar facade de Forms e HTML no laravel 5 execute:&lt;br /&gt;&lt;br /&gt;composer require Collective\Html&lt;br /&gt;&lt;br /&gt;Adicionar ao require do composer.json:&lt;br /&gt;        &quot;laravelcollective/html&quot;: &quot;5.4.6&quot;&lt;br /&gt;&lt;br /&gt;composer update&lt;br /&gt;&lt;br /&gt;Adicionar na seção provider de config/app.php a linha&lt;br /&gt;&lt;br /&gt;Collective\Html\HtmlServiceProvider::class,&lt;br /&gt;&lt;br /&gt;E na seção aliases de config/app.php:&lt;br /&gt;&lt;br /&gt;'Form'     =&amp;gt; Collective\Html\FormFacade::class,&lt;br /&gt;'Html'     =&amp;gt; Collective\Html\HtmlFacade::class,&lt;br /&gt;&lt;br /&gt;Depois disso podemos criar forms assim:&lt;br /&gt;&lt;br /&gt;{!! Form::open([&lt;br /&gt;    'route' =&amp;gt; 'tasks.store'&lt;br /&gt;]) !!}&lt;br /&gt;&lt;br /&gt;&amp;lt;div class=&quot;form-group&quot;&amp;gt;&lt;br /&gt;    {!! Form::label('title', 'Title:', ['class' =&amp;gt; 'control-label']) !!}&lt;br /&gt;    {!! Form::text('title', null, ['class' =&amp;gt; 'form-control']) !!}&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;div class=&quot;form-group&quot;&amp;gt;&lt;br /&gt;    {!! Form::label('description', 'Description:', ['class' =&amp;gt; 'control-label']) !!}&lt;br /&gt;    {!! Form::textarea('description', null, ['class' =&amp;gt; 'form-control']) !!}&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;{!! Form::submit('Create New Task', ['class' =&amp;gt; 'btn btn-primary']) !!}&lt;br /&gt;{!! Form::close() !!}&lt;br /&gt;&lt;br /&gt;if(view()-&amp;gt;exists('clientes.store')){&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;{{ $nome or 'Valor Default'}}&lt;br /&gt;&lt;br /&gt;Dados sem caracteres de scape&lt;br /&gt;&lt;br /&gt;Olá, {!! $nome !!}&lt;br /&gt;&lt;br /&gt;Formato de data&lt;br /&gt;&lt;br /&gt;echo with($var)-&amp;gt;format('d/m/Y H:i');&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</content>
		<category term="Tutoriais" />
	</entry>
	<entry>
		<title>Relacionamentos</title>
		<link rel="alternate" type="text/html" href="http://backup/portal/frameworks/laravel-5/tutoriais/relacionamentos.html"/>
		<published>2017-06-25T21:08:35-03:00</published>
		<updated>2017-06-25T21:08:35-03:00</updated>
		<id>http://backup/portal/frameworks/laravel-5/tutoriais/relacionamentos.html</id>
		<author>
			<name>Ribamar FS</name>
		</author>
		<summary type="html">&lt;p&gt;&lt;strong&gt;Relacionamento entre tabelas e entre models no Laravel 5&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;Para relacionar tabelas usar a convenção&lt;br /&gt;&lt;br /&gt;inserir um campo chamado &lt;br /&gt;tabela_id int not null&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Relacionar users com groups:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;groups&lt;br /&gt;id&lt;br /&gt;&lt;br /&gt;users&lt;br /&gt;id&lt;br /&gt;group_id&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Relacionar os Models Task com User&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;class Task extends Model {&lt;br /&gt;    public function user()&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;belongsTo('User');&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;class User extends Model {&lt;br /&gt;    public function tasks()&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;hasMany('Task');&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Relacionamento entre posts e comments&lt;/strong&gt;&lt;br /&gt;Um para muitos&lt;br /&gt;&lt;br /&gt;namespace App;&lt;br /&gt;&lt;br /&gt;use Illuminate\Database\Eloquent\Model;&lt;br /&gt;&lt;br /&gt;class Post extends Model&lt;br /&gt;{&lt;br /&gt;    /**&lt;br /&gt;     * Get the comments for the blog post.&lt;br /&gt;     */&lt;br /&gt;    public function comments()&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;hasMany('App\Comment'); // Passamos aqui a chave estrangeira, mas somente quando diferente&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Comments&lt;br /&gt;&amp;lt;?php&lt;br /&gt;&lt;br /&gt;namespace App;&lt;br /&gt;&lt;br /&gt;use Illuminate\Database\Eloquent\Model;&lt;br /&gt;&lt;br /&gt;class Comment extends Model&lt;br /&gt;{&lt;br /&gt;    /**&lt;br /&gt;     * Get the post that owns the comment.&lt;br /&gt;     */&lt;br /&gt;    public function post()&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;belongsTo('App\Post');&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Ou usamos App\Post&lt;br /&gt;ou fazemos o importe no começo e usamos apenas Post&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Usando o tinker para trazer um produto e suas avaliações&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;php artisan tinker&lt;br /&gt;&lt;br /&gt;use Loja\Produto;&lt;br /&gt;$p-&amp;gt;Prpduto::find(5);&lt;br /&gt;&lt;br /&gt;$p-&amp;gt;avaliacoes;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</summary>
		<content type="html">&lt;p&gt;&lt;strong&gt;Relacionamento entre tabelas e entre models no Laravel 5&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;Para relacionar tabelas usar a convenção&lt;br /&gt;&lt;br /&gt;inserir um campo chamado &lt;br /&gt;tabela_id int not null&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Relacionar users com groups:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;groups&lt;br /&gt;id&lt;br /&gt;&lt;br /&gt;users&lt;br /&gt;id&lt;br /&gt;group_id&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Relacionar os Models Task com User&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;class Task extends Model {&lt;br /&gt;    public function user()&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;belongsTo('User');&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;class User extends Model {&lt;br /&gt;    public function tasks()&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;hasMany('Task');&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Relacionamento entre posts e comments&lt;/strong&gt;&lt;br /&gt;Um para muitos&lt;br /&gt;&lt;br /&gt;namespace App;&lt;br /&gt;&lt;br /&gt;use Illuminate\Database\Eloquent\Model;&lt;br /&gt;&lt;br /&gt;class Post extends Model&lt;br /&gt;{&lt;br /&gt;    /**&lt;br /&gt;     * Get the comments for the blog post.&lt;br /&gt;     */&lt;br /&gt;    public function comments()&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;hasMany('App\Comment'); // Passamos aqui a chave estrangeira, mas somente quando diferente&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Comments&lt;br /&gt;&amp;lt;?php&lt;br /&gt;&lt;br /&gt;namespace App;&lt;br /&gt;&lt;br /&gt;use Illuminate\Database\Eloquent\Model;&lt;br /&gt;&lt;br /&gt;class Comment extends Model&lt;br /&gt;{&lt;br /&gt;    /**&lt;br /&gt;     * Get the post that owns the comment.&lt;br /&gt;     */&lt;br /&gt;    public function post()&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;belongsTo('App\Post');&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Ou usamos App\Post&lt;br /&gt;ou fazemos o importe no começo e usamos apenas Post&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Usando o tinker para trazer um produto e suas avaliações&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;php artisan tinker&lt;br /&gt;&lt;br /&gt;use Loja\Produto;&lt;br /&gt;$p-&amp;gt;Prpduto::find(5);&lt;br /&gt;&lt;br /&gt;$p-&amp;gt;avaliacoes;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</content>
		<category term="Tutoriais" />
	</entry>
</feed>
