猿问

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

我正在使用 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


繁花如伊
浏览 142回答 1
1回答

jeck猫

看到创建表语句和存储函数后。看来您的商店功能更有可能是这里的问题。尝试这个: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']。
随时随地看视频慕课网APP
我要回答