Criar Tabelas no Laravel (Migrations)
Criar novas migrations:
Para criar uma nova Migration você pode criar o arquivo manualmente e rodar o comando composer dump-autoload para atualizar a lista de arquivos (Não recomendado!).
Ou você pode utilizar o grande aliado do desenvolvedor Laravel o artisan para criar isso para você.
Utilizando o artisan você pode criar as migrations (tabelas) de duas formas:
| 1 | php artisan make:migration create_products_table |
Assim gera um arquivo de migration apenas, com um nome semelhante a isso:
database/migrations/ano_mes_dia_timestamps_create_products_table.php
Criando tabelas com nome composto:
Quando você manda assim
php artisan make:model InformationUser -m
ele faz a parte do migration corretamente colocando pela nomenclatura que você deseja que é
Schema::create('information_users ', function (Blueprint $table) {
mas, ele usa o mesmo nome com o i em minusculo:
class InformationUser extends Model
acaba a final você tendo que arrumar para InformationUser na classe.
Criando Controller:
Agora vamos falar da Controller, elas servem para agrupar toda a lógica das suas requisições em uma única classe. Você pode ver abaixo o nosso arquivo referente a CRUD de Produtos que estamos desenvolvendo, 60 linhas é relativamente grande, se deixássemos todo esse código direto nas nossas rotas seria um caos, os controllers nos ajudam a organizar nosso projeto.
php artisan make:controller NameController
<?php
namespace App\Http\Controllers;
use App\Http\Requests\ProductRequest;
use App\Product;
class ProductController extends Controller
{
public function index()
{
$products = Product::orderBy('created_at', 'desc')->paginate(10);
return view('products.index',['products' => $products]);
}
public function create()
{
return view('products.create');
}
public function store(ProductRequest $request)
{
$product = new Product;
$product->name = $request->name;
$product->description = $request->description;
$product->quantity = $request->quantity;
$product->price = $request->price;
$product->save();
return redirect()->route('products.index')->with('message', 'Product created successfully!');
}
public function show($id)
{
//
}
public function edit($id)
{
$product = Product::findOrFail($id);
return view('products.edit',compact('product'));
}
public function update(ProductRequest $request, $id)
{
$product = Product::findOrFail($id);
$product->name = $request->name;
$product->description = $request->description;
$product->quantity = $request->quantity;
$product->price = $request->price;
$product->save();
return redirect()->route('products.index')->with('message', 'Product updated successfully!');
}
public function destroy($id)
{
$product = Product::findOrFail($id);
$product->delete();
return redirect()->route('products.index')->with('alert-success','Product hasbeen deleted!');
}
}
Dentro da Controller você pode ver que criamos as funções referentes ao que uma CRUD deve fazer. Essas funções devem ser chamadas nas rotas como métodos da sua controller. Há duas formas de se fazer isso.
<?php
...
Route::group(['prefix' => 'admin', 'middleware' => 'auth'], function () {
Route::get('/', 'AdminController@getIndex');
Route::get('projetos', 'ProjetosController@getIndex');
Route::get('projetos/inserir', 'ProjetosController@getInserir');
Route::post('projetos/inserir', 'ProjetosController@postInserir');
Route::get('projetos/editar/{id}', 'ProjetosController@getEditar');
Route::post('projetos/editar/{id}', 'ProjetosController@postEditar');
Route::post('projetos/deletar/{id}', 'ProjetosController@postDeletar');
...
});
?>