【发布时间】:2016-03-21 15:53:39
【问题描述】:
我正在将一个页面转换为 Laravel。 我曾经有一个 PHP 脚本 (GET) 可以处理来自任何表的选择查询。我所要做的就是发送 table 参数,它会返回结果。
这个想法是有一个这样的控制器:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use DB;
class Projects extends Controller
{
/**
* Get projects based on the table
*
* @return Response
*/
public function index($table)
{
$result = DB::select("SELECT projectid FROM `" . $table . "` WHERE isClass=1 LIMIT 10");
return view('pages.allviews', ['results' => $result]);
}
}
问题是该页面将执行此查询 3 次。 发生这种情况,控制器会在执行后立即创建视图,唯一的解决方案是在控制器中重复查询 3 次。
我想避免这样做,我想将控制器与页面需要的内容分开,并能够在页面需要的时间执行它。概括是关键。
有没有办法做到这一点,并保持这种抽象,而不必创建新的控制器?
【问题讨论】:
-
创建另一个类,只要它的命名空间正确,您可以在需要时引用它。
-
你能给我举个例子,我如何为同一个视图引用它三次吗?
-
使用 \path\for\namespace\classname,然后 $this->data['grabbed_stuff'] = classname::method(); 然后是 view('some.view',$this->data)。 $grabbed_stuff 将显示在您的视图中