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
上一页: 悲观锁的实现,select…for update下一页: 脏读、幻读、不可重复读的区别是什么
发表回复