这有点难以解释,但我想用最简单的方式来解释。
我有一个表单,一个字段重复两次,以节省两次不同的时间在同一个提交。
目的是将重复两次的字段同时保存在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
如果你想这样做只是告诉我,我会编辑答案。
另一个注意事项:我没有尝试这个代码,如果发生任何错误,请告诉我。
幸福的编码。