为了账号安全,请及时绑定邮箱和手机立即绑定

default() 在 Laravel 迁移中不起作用

default() 在 Laravel 迁移中不起作用

PHP
繁花如伊 2023-07-08 22:07:35
我正在使用 laravel 创建一个待办事项列表,并且我有一个包含以下各列的表格:'标题'、'描述'、'已完成'、'id'每当我向表中添加新任务时,都会自动设置“已完成”列,其默认值为 0,其编码如下:$table->boolean('completed')->default(0);该列工作得很好,但是当我尝试为“描述”提供默认值(通过为描述保留空输入)时,它会给出“完整性约束违规:1048 列“描述”不能为空”错误。我为“描述”列编写的代码如下:$table->string('description')->default('-');我尝试了 text() 数据类型,但它给了我同样的错误。我还尝试对此列使用 nullable() ,但默认值 '-' 不会添加到该列中,并且它返回一个空值。我用来添加值的表单如下所示:<form action="/create" class="panel" method="post">    @csrf    <input name="title" type="text" class="title">    <textarea name="description" class="title"></textarea>    <input type="submit" class="submit"></form>我的控制器存储方法:public function createTask(validation $request){        $userId = auth()->id();        $request['user_id'] = $userId;        Task::create($request->all());        return redirect()->route('showList');    }和表创建语句:CREATE TABLE `tasks` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `completed` tinyint(1) NOT NULL DEFAULT 0, `user_id` bigint(20) unsigned NOT NULL, `created_at` timestamp NULL DEFAULT NULL, `updated_at` timestamp NULL DEFAULT NULL, `description` text COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ' ', PRIMARY KEY (`id`), KEY `tasks_user_id_foreign` (`user_id`), CONSTRAINT `tasks_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
查看完整描述

1 回答

?
jeck猫

TA贡献1909条经验 获得超7个赞

看到创建表语句和存储函数后。看来您的商店功能更有可能是这里的问题。尝试这个:


use Illuminate\Support\Facades\Auth;


public function createTask(Request $request){

    $user = Auth::user();//get the user model

    $request->validate([//validate that the data is according to limitations

        'title' => 'required|max:255',

        'description' => 'max:1000',

    ]);

    $task = new Task;  //create a new instance of Task

    //fill in the data

    $task->title = $request->input('title');

    if(!empty($request->input('description')){

        $task->description = $request->input('description');

    }

    $task->user_id = $user->id;

    $task->save();//save it

    

    return redirect()->route('showList');

}

对于批量分配,您应该将数据库字段定义为可在您的Modelwith中批量分配protected $fillable = ['title','description','user_id']。


查看完整回答
反对 回复 2023-07-08
  • 1 回答
  • 0 关注
  • 141 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信