我刚到拉雷维尔。我一直在尝试创建一个以backup\u date\u.sql格式备份表的控制器,而根本不使用任何第三方库,但我很沮丧。我搜索了一些代码示例。我尝试在backupsconner中使用它们,但是事情变得越来越困难。非常感谢您的帮助。这是我的密码,提前谢谢。
<?php
public function query($data, $mode = \PDO::FETCH_ASSOC)
{
$pdo = DB::connection()->getPdo();
$stmt = $pdo->query($data);
$results = $stmt->fetchAll($mode);
// $results = $stmt->fetch($mode);
return $results;
}
public function backup(Request $request)
{
if ($request->all()) {
$output = '';
foreach (request('table') as $table) {
$show_table_query = $this->query("SHOW CREATE TABLE " . stripslashes($table) . "");
foreach ($show_table_query as $show_table_row)
{
array_shift($show_table_row);
$output .= implode(", ", $show_table_row);
}
$single_result = DB::select('select * from ' . stripslashes($table));
foreach ($single_result as $key => $value)
{
$value = array_map(function($obj) {
return (array) $obj;
}, $single_result);
$keys = array_keys($value[$key]);
$val = array_values($value[$key]);
$get_keys = array_shift($keys);
$get_values = array_shift($val);
$table_column = implode(",", $keys);
// $table_value ="'" . implode("','", $val) . "'\n";
$table_value ="'" . implode("','", $val) . "'";
$output .= DB::insert(
"INSERT INTO " . stripslashes($table) . "("
. $table_column . ") VALUES(" . $table_value . ")"
);
}
}
?>
2条答案
按热度按时间pengsaosao1#
这是我发现的一个函数,后来修改为导出数据库,包括数据库中存在的所有数据、存储过程和函数(如果有的话)。该代码是为codeigniter应用程序编写的,但是您可以轻松地将其转换为laravel。
codeigniter版本:
laravel版本:
注意:我已经尽力将上述代码从codeigniter转换为laravel。但是由于我没有运行laravel的示例来测试它,所以我不确定它是否能工作
olhwl3o22#
写一个
命令https://laravel.com/docs/5.6/artisan#writing-命令
使用ssh
mysqldump -uUSERNAME -p DATABASE > backup.sql
以及时间表https://laravel.com/docs/5.6/scheduling 以及
完成:))