【问题标题】:Laravel SQL request too bigLaravel SQL 请求太大
【发布时间】:2014-11-21 10:00:57
【问题描述】:

我的目标

是为 lambda 用户创建一个简单的 DB navigator。 为此,我有一个 side-bar,其中包含所有 DB table_name

页面中心,我想要数据。 这是我的表名:

administratif
equipement
erreur
etablissement
interface_eth_routeur
interface_eth_switch
interface_ip_routeur
latence
mainteneur
routeur_arp
routeur_gsu
routeur_su
salle_visio
site
switch
switch_arp
switch_module

现在,有代码: ROUTES.PHP

Route::get('navigateur_bdd', array('uses' => 'HomeController@navigateur_bdd', 'as' => 'navigateur_bdd'));
Route::get('navigateur_bdd/{table_name}', array('uses' => 'HomeController@bdd_show_table', 'as' => 'bdd_show_table'));

HOMECONTROLLER.PHP

public function navigateur_bdd()
{
    $table_name = DB::select('SHOW TABLES');
    return View::make('navigateur_bdd', array('which_actif' => 3, 'table_name' => $table_name));
}

public function bdd_show_table($argument = NULL) {
    $selected_table = DB::table($argument)->get();
    $table_name = DB::select('SHOW TABLES');
    return View::make('navigateur_bdd', array('which_actif' => 3, 'table_name' => $table_name, 'selected_table' => $selected_table));
}

第一个功能是主视图,当用户进入这个区域时。

第二个函数在用户点击主视图侧边栏中的table_name时使用

NAVIGATEUR_BDD.BLADE.PHP

 <div id="sidebar-wrapper">
    <ul class="sidebar-nav" id="sidebar">   
      <li class="well">Liste des tables</li>  
      @for ($i = 0 ; $i < count($table_name); $i ++)
          <li><a href="{{ URL::to('navigateur_bdd/' . $table_name[$i]->Tables_in_MYNET)}}">{{$table_name[$i]->Tables_in_MYNET}}</a></li>
      @endfor
    </ul>
  </div>

现在发生了什么? 点击“administratif”或“erreur”等表名即可

但是点击前缀为“routeur_”的表名会显示一个空白页面,没有错误。 我没有在 database.php 中设置任何前缀,因为并非所有表都有前缀 我怎么知道这个?

编辑:一些带前缀的表正在工作。不是全部,我不知道为什么......像“switch”前缀:

"switch"
"switch_module"

正在工作,但没有

"switch_arp"
routeur_su
routeur_gsu

正在工作,但没有

routeur_arp

经过调查,我在有很多行的表上有空白页(例如 110 000)(用 dd($selected_table) 试过); 所以这改变了我的问题的标题: 我如何将这 110 000 行存储在一个变量中?

【问题讨论】:

  • 您能否首先通过在控制器开头使用dd($argument) 确保表名正确传递给控制器​​?
  • 正确。每个表名似乎都是正确的,如下所示: string 'interface_ip_routeur' (length=20)
  • 如果你用$selected_table做同样的事情?
  • 它不显示前面所说的表格。我得到它。它不会显示变量的表是具有 5000+ 行的表(switch_arp 有 110 000 行)我该怎么办?
  • 你认为他们有很多行?如果你这样做DB::table($argument)-&gt;take(1000)-&gt;get()怎么办?

标签: mysql laravel routes prefix tablename


【解决方案1】:

您可以使用 Laravel pagination 功能。
它将您的数据拆分为页面,让您生成链接以访问每个页面...

$selected_table = DB::table($argument)->paginate(100); // how many records you wan't on one page

然后在您的视图中执行此操作以生成链接

{{ $table_name->links() }}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-15
    • 1970-01-01
    相关资源
    最近更新 更多