如何从laravel route post将数据保存到mysql数据库中
Posted
技术标签:
【中文标题】如何从laravel route post将数据保存到mysql数据库中【英文标题】:How to save data into mysql database from laravel route post 【发布时间】:2021-08-23 22:29:37 【问题描述】:我有 web.php 文件
<?php
use Illuminate\Support\Facades\Route;
use Illuminate\Http\Request;
Route::get('/', function ()
return view('welcome');
);
Route::post('/upload', function (Request $request)
$name=$request->file("thing")->getClientOriginalName();
Storage::disk("google")->putFileAs("",$request->file("thing"),$name);
)->name("upload");
?>
和 html 代码类似
<!DOCTYPE html>
<html lang=" str_replace('_', '-', app()->getLocale()) ">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Google drive integration in laravel</title>
<!-- CSS only -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-+0n0xVW2eSR5OomGNYDnhzAbDsOXxcvSN1TPprVMTNDbiYZCxYbOOl7+AMvyTG2x" crossorigin="anonymous">
</head>
<body>
<div class="container">
<div class="row">
<div class="col-12">
<br><br><br>
<form action="/upload" method="post" enctype="multipart/form-data">
@csrf
<input type="file" class="form-control" name="thing" id="title">
<p id="s"></p>
<br>
<input type="submit" class="btn btn-sm btn-block btn-danger" value="Upload">
</form>
</div>
</div>
</div>
</body>
</html>
我希望将Route::post
的$name 变量中接收到的数据保存在数据库中。
就像我的 mysql 数据库名称“registration”有表“books”,我想将此值保存在“URL”列中
我该怎么做?
【问题讨论】:
【参考方案1】:先移动文件,然后保存记录:
Route::post('/upload', function (Request $request, Table $table)
$name=$request->file("thing")->getClientOriginalName();
$request->file->move('dirname', $name);
$table->column_name = "dirname/$name";
$table->save();
)->name("upload");
【讨论】:
【参考方案2】:首先检查数据库表是否存在
Schema::connection('mysql')->hasTable('books')
如果存在则返回true,否则返回false
用于插入数据库
DB::table('books')->insert(['URL'=>$name])
最终代码将是
$tableExist=Schema::connection('mysql')->hasTable('books');
if($tableExist)
DB::table('books')->insert(['URL'=>$name]);
您也可以使用连接进行查询插入
DB::connection('mysql')->table('users')->insert(['URL'=>$name]);
如果您使用默认连接,则也不需要连接方法。
对于进口
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
【讨论】:
【参考方案3】:首先您需要编辑您的.env
文件。
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=registration
DB_USERNAME=root
DB_PASSWORD=secretPassword
插入您的数据会这样工作
首先你需要导入数据库类
use Illuminate\Support\Facades\DB;
然后执行插入语句
DB::insert('insert into books (URL) values (?)', [$name]);
您的表格中可能有不止一列
DB::insert('insert into books (URL, AnotherColumn) values (?,?)', [$name,'anotherValue']);
来源laravel-docs
【讨论】:
我现在说不出有多感激。 还有一件事,我的整个项目都在 xampp 中,我正在制作和运行 PHP 文件,现在我希望当用户单击按钮时我的 laravel 项目打开,我想要这个使用 localhost/.. 路径在 xampp 上工作,而无需使用工匠服务器。我该怎么做? 我在这篇文章中尝试了几件事***.com/questions/28788285/…,它打开了项目,但是当我点击上传按钮时,它不起作用,路径 localhost/uploads 不存在 这超出了我的认知 避免100%做DB::insert('.....')
,使用模型或者至少DB::table('books')->....
...尽量避免使用DB
类...以上是关于如何从laravel route post将数据保存到mysql数据库中的主要内容,如果未能解决你的问题,请参考以下文章
如何在laravel 5.5中使用令牌从JWTAuth获取用户