Laravel 8开发CMS的备注模块

下载Laravel指定版本:

composer create-project laravel/laravel=8.6.5 --prefer-dist LaravelCMS

后台HTML模板:
https://adminlte.io

【Laravel迁移】

// 1.生成迁移
php artisan make:migration create_demos_table

// 2.设置表的字段设置

// 3.运行迁移
php artisan migrate

// 4.回滚迁移
php artisan migrate:rollback

// 5.重建数据库
php artisan migrate:refresh

【过长字段问题】
刚安装laravel运行php artisan的时候,会出现字段过长而无法正常运行,这时候需要在app\Providers\AppServiceProvider.php下加入以下代码:

use Illuminate\Support\Facades\Schema;

public function boot()
{
	Schema::defaultStringLength(191);
}

【通过迁移文件,后加字段】


php artisan make:migration add_field_into_demos
// 运行迁移时会被调用
public function up()
{
    Schema::table('users',function (Blueprint $table) {
        $table->string('status')->after('content')->default(0);
    });
}

// 回滚迁移时会被调用
public function down()
{
    Schema::table('users', function (Blueprint $table) {
        $table->dropColumn('status');
    });
}

【模型】

// 1.最基础的模型
php artisan make:model Demo

// 2.指定表名和主键
protected $table = "remarks";
protected $primaryKey = 'remark_id';

// 3.加入常量的设置
const STATUS1 = 0; 
const STATUS1 = 1;

新增功能,控制器部分:

/**
 * create方法新增
 */
public function create(Request $request)
{
    // 数据验证
    $request->validate([
        'title' => 'required|max:255',
        'content' => 'required',
    ]);

    // 保存数据
    $data = [
        'title' => request('title'),
        'content' => request('content'),
    ];

    Remark::create($data);

    // 返回操作
    return back();
}

/**
 * save方法新增
 */
public function save(Request $request)
{
    // 数据验证
    $request->validate([
        'title' => 'required|max:255',
        'content' => 'required',
    ]);

    // 保存数据
    $model = new Remark();
    $model->title = request('title');
    $model->content = request('content');
    $model->save();

    // 返回操作
    return back();
}

/**
 * tinker方式新增
 */
public function tinker_demo()
{
    $remark = new \App\Models\Remark;
    $remark->title = 'title1';
    $remark->content = 'content1';
    $remark->save();

    $remark = new \App\Models\Remark;
    $remark->title = 'title2';
    $remark->content = 'content2';
    $remark->save();

    $remark = new \App\Models\Remark;
    $remark->title = 'title3';
    $remark->content = 'content3';
    $remark->save();
}

/**
 * factory方式新增
 */
public function factory_demo()
{
    // $user = User::factory()->create();
    // $user = User::factory()->count(3)->create();

    // php artisan make:factory RemarkFactory
    $remark = Remark::factory()->count(3)->create();

    return $remark;
}

编辑功能,html部分:

<a class="btn btn-info btn-sm remark-edit" id="id1" title="title1" content="content1" data-toggle="modal" data-target="#remark-edit">编辑</a>

<script>
  $(document).ready(function()
  {
    $(".remark-edit").click(function()
    {
        var id = $(this).attr('id');
        var title = $(this).attr('title');
        var content = $(this).attr('content');
        $("#edit_id").val(id);
        $("#edit_title").val(title);
        $("#edit_content").val(content);
    });
  });
</script>

更新功能,控制器部分:

/**
 * update方法更新
 */
public function update(Request $request)
{
    // 数据验证
    $request->validate([
        'edit_id' => 'required|integer',
        'edit_title' => 'required|max:255',
        'edit_content' => 'required',
    ]);

    $remark = Remark::where('id', request('edit_id'))->first();
    if(empty($remark)) {
        return '找不到数据';
    }

    // 保存数据
    $data = [
        'title' => request('edit_title'),
        'content' => request('edit_content'),
    ];

    Remark::where('id', request('edit_id'))->update($data);

    // 返回操作
    return back();
}

/**
 * save方法更新
 */
public function saveUpdate(Request $request)
{
    // 数据验证
    $request->validate([
        'edit_id' => 'required|integer',
        'edit_title' => 'required|max:255',
        'edit_content' => 'required',
    ]);

    $remark = Remark::where('id', request('edit_id'))->first();
    if(empty($remark)) {
        return '找不到数据';
    }

    // 保存数据
    $remark->title = request('edit_title');
    $remark->content = request('edit_content');
    $remark->save();

    // 返回操作
    return back();
}

删除功能,jQuery部分:

function deleleRemark(id)
{
    var ask = confirm('是否删除这个备注');

    if(ask)
    {
        $.ajax({
            type: "POST",
            url: "/api/admin/remark/delete",
            data: { 
                id: id,
                key: 'key_value',
            },
            cache : false,
            success: function(data)
            {
                window.location.reload();
            } ,error: function(xhr, status, error) 
            {
                alert(error);
            },
        });
    }
}

新增字段:

php artisan make:migration add_delete_into_remarks
上一页:
下一页:

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注