<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up(): void
{
Schema::create('produtos', function (Blueprint $table) {
$table->id();
$table->string('nome');
$table->decimal('preco', 8, 2);
$table->timestamps();
});
}
public function down(): void
{
Schema::dropIfExists('produtos');
}
};
?>
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Produto extends Model
{
use HasFactory;
protected $fillable = ['nome', 'descricao', 'preco']; // Adicione todos os campos que você deseja permitir para atribuição em massa
}
<?php
namespace App\Http\Controllers;
use App\Models\Produto;
use Illuminate\Http\Request;
class ProdutoController extends Controller
{
public function index()
{
return response()->json(Produto::all());
}
public function store(Request $request)
{
$request->validate([
'nome' => 'required|string|max:255',
'preco' => 'required|numeric',
]);
$produto = Produto::create($request->all());
return response()->json($produto, 201);
}
public function show($id)
{
$produto = Produto::findOrFail($id);
return response()->json($produto);
}
public function update(Request $request, $id)
{
$produto = Produto::findOrFail($id);
$produto->update($request->all());
return response()->json($produto);
}
public function destroy($id)
{
Produto::destroy($id);
return response()->json(null, 204);
}
}
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ProdutoController;
Route::get('produtos', [ProdutoController::class, 'index']);
Route::post('produtos', [ProdutoController::class, 'store']);
Route::get('produtos/{id}', [ProdutoController::class, 'show']);
Route::put('produtos/{id}', [ProdutoController::class, 'update']);
Route::delete('produtos/{id}', [ProdutoController::class, 'destroy']);