通过路由从 Laravel 中的 MySQL 导出列时出错

Posted

技术标签:

【中文标题】通过路由从 Laravel 中的 MySQL 导出列时出错【英文标题】:Error while exporting the column from MySQL in Laravel through routing 【发布时间】:2020-07-16 19:29:22 【问题描述】:

我有来自Github 的 Laravel 项目,我正在尝试将选定的列导出到 txt 文件。表名customers,列名customer_contact_numbers来自数据库khanoilsdb

这是我面临的错误: 我添加了一个新控制器和以下代码:

    <?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class CNController extends Controller

    $customers = Customer::all();
$phoneNumbers = "Phone numbers \n";
foreach ($customers as  $customer) 
  $content .= $customer->customer_contact_numbers;
  $content .= "\n";


// file name to download
$fileName = "contact_numbers.txt";

// make a response, with the content, a 200 response code and the headers
return Response::make($content, 200, [
  'Content-type' => 'text/plain', 
  'Content-Disposition' => sprintf('attachment; filename="%s"', $fileName),
  'Content-Length' => sizeof($content)
];);

Web.php:

Route::get('/home', 'CNController');

还有按钮:

      <div class="dropdown-menu dropdown-menu-right">
    <a class="dropdown-item" href=" route('CNController') ">Export</a>
  </div>

我想做的是,用户点击后,它会调用控制器方法并开始下载一个txt文件。

对不起,如果我不能正确解释,我是 Laravel 和 PHP 的新手。谢谢:)

【问题讨论】:

【参考方案1】:

问题是你的类中没有函数。

你可以像这样添加一个新函数exportNumbers

class CNController 
    public function exportNumbers() 
      // Your code here
    

然后你必须编辑web.php文件来调用这个函数:

Route::get('/home', 'CNController@exportNumbers');

【讨论】:

Drik,非常感谢。我收到此错误:throw new InvalidArgumentException("Route [$name] not defined."); 它说,Route [CNController] not defined. in dashboard.blade.php &lt;a class="dropdown-item" href=" route('CNController') "&gt;Export&lt;/a&gt;

以上是关于通过路由从 Laravel 中的 MySQL 导出列时出错的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 使用 PhpOffice 导入导出 Excel

通过laravel中的javascript函数在路由中传递两个变量

只能访问 Laravel 5.2 中的 / 路由

通过删除 Laravel 中的多余字符,从斜杠分隔的 url 中提取参数值

如何从刀片模板中的 Javascript 文件重定向 Laravel 路由

如何从 laravel 中的某个路由页面检索图像或文件?