📌  相关文章
📜  laravel 制作模型及其控制器和迁移文件 - PHP (1)

📅  最后修改于: 2023-12-03 15:02:36.526000             🧑  作者: Mango

Laravel 制作模型及其控制器和迁移文件 - PHP

简介

Laravel 是一个基于 PHP 的开源 Web 应用程序框架,旨在用简单、优雅的语法让 Web 应用程序开发更加快速、简单和愉悦。

模型(Model)是 Laravel 中处理数据的核心,控制器(Controller)负责处理用户请求,并渲染返回视图(View),迁移文件(Migration)用于管理数据库的结构。

本文将介绍如何使用 Laravel 创建模型、控制器和迁移文件。

步骤
安装 Laravel

使用 Composer 进行安装:

composer create-project --prefer-dist laravel/laravel myapp
创建模型

使用 Artisan 命令行工具创建模型:

php artisan make:model Post

这将在 app 目录下创建一个名为 Post 的模型类。

创建控制器

使用 Artisan 命令行工具创建控制器:

php artisan make:controller PostController

这将在 app/Http/Controllers 目录下创建一个名为 PostController 的控制器类。

创建迁移文件

使用 Artisan 命令行工具创建迁移文件:

php artisan make:migration create_posts_table

这将在 database/migrations 目录下创建一个名为 create_posts_table 的迁移文件。可以使用以下命令运行迁移:

php artisan migrate
修改模型

app/Post.php 文件中,可以添加属性、关系和方法。

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    protected $fillable = ['title', 'content', 'user_id']; // 可批量赋值的属性

    public function user()
    {
        return $this->belongsTo(User::class);
    }
}
修改控制器

app/Http/Controllers/PostController.php 文件中,添加方法来处理请求:

<?php

namespace App\Http\Controllers;

use App\Post;

class PostController extends Controller
{
    public function index()
    {
        $posts = Post::all();

        return view('posts.index', compact('posts'));
    }

    public function create()
    {
        return view('posts.create');
    }

    public function store()
    {
        $attributes = request()->validate([
            'title' => 'required',
            'content' => 'required',
        ]);

        $attributes['user_id'] = auth()->id(); // 当前用户 ID

        $post = Post::create($attributes);

        return redirect('/posts/' . $post->id);
    }

    public function show(Post $post)
    {
        return view('posts.show', compact('post'));
    }

    public function edit(Post $post)
    {
        return view('posts.edit', compact('post'));
    }

    public function update(Post $post)
    {
        $attributes = request()->validate([
            'title' => 'required',
            'content' => 'required',
        ]);

        $post->update($attributes);

        return redirect('/posts/' . $post->id);
    }

    public function destroy(Post $post)
    {
        $post->delete();

        return redirect('/posts');
    }
}
修改路由

routes/web.php 文件中,添加路由:

Route::get('/posts', 'PostController@index')->name('posts.index');
Route::get('/posts/create', 'PostController@create')->name('posts.create');
Route::post('/posts', 'PostController@store')->name('posts.store');
Route::get('/posts/{post}', 'PostController@show')->name('posts.show');
Route::get('/posts/{post}/edit', 'PostController@edit')->name('posts.edit');
Route::put('/posts/{post}', 'PostController@update')->name('posts.update');
Route::delete('/posts/{post}', 'PostController@destroy')->name('posts.destroy');
结论

Laravel 提供了简单而优雅的方法来创建模型、控制器和迁移文件。通过这些元素的组合使用,开发者可以创建灵活且可扩展的 Web 应用程序。

参考