如何在DB表的同一字段中保存2倍不同的数据?——Laravel



这有点难以解释,但我想用最简单的方式来解释。

我有一个表单,一个字段重复两次,以节省两次不同的时间在同一个提交。

目的是将重复两次的字段同时保存在DB的两个不同行中。

为什么是这个结构?我不知道,但这是如何创建表单和表,它不能被修改。

有办法吗?修改模型?也许是控制器?帮助Laravel大师。

DB Structure

  • ID (Primary Key, AUTOINCREMENT)
  • 数据(字符串)

DataController.php

namespace AppHttpControllersdata;
use AppData;
use AppHttpControllersController;
use IlluminateHttpRequest;
class DataController extends Controller
{
public function create()
{
return view('data', ['Data' => new Data()]);
}
public function store(Request $request)
{
Data::create($request->validated());
}
}

Data.php

namespace App;
use IlluminateDatabaseEloquentModel;
class Data extends Model
{
protected $table = 'table_data';
protected $primaryKey = 'ID';
protected $fillable = [
'data'
];
public $timestamps = false;
}

data.blade.php

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Send Data</title>
</head>
<body>
<form action="{{ route("store") }}" method="POST">
@csrf

{{-- Data in field 1 in DB --}
<div>
<input type="text" name="data" id="data">
</div>
{{-- Data in field 2 in DB --}
<div>
<input type="text" name="data" id="data">
</div>
<input type="submit" class="btn btn-primary" value="Enviar"> 
</form>
</body>
</html>

将JSON添加到DB请按照以下步骤操作

{{-- At blade --}
{{-- Data in field 1 in DB --}
<div>
<input type="text" name="data[]" id="data"> <!-- you should add[] to return array of data -->
</div>
{{-- Data in field 2 in DB --}
<div>
<input type="text" name="data[]" id="data">
</div>

下一步

// At controller
$request->validate([
'data.*' => ['required', 'date'], // your validation
]);
$json = json_encode($request->get('data'));
Data::create(['data' => $json]);

下一步是从数据库中调用data

// Model (Data)
// We change from json to array (you can do anything here like chage date format)
public function getDataAttribute()
{
return json_decode($this->data);
}

最后一步

//anywhere
$model->data[0]
$model->data[1]

注意你可以用不同的键只是在HTML更改名称data1,data2如果你想这样做只是告诉我,我会编辑答案。

另一个注意事项:我没有尝试这个代码,如果发生任何错误,请告诉我。

幸福的编码。

相关内容

最新更新