好的问题是这样的
我在AController
public function index()
{
$store = Store::(query)(to)(rows)->first();
return view('store.index', compact('store'));
}
现在在同一个控制器中我有另一个功能
public function abc()
{
return view('store.abc');
}
现在,对于此功能,我还想将compact('store')
发送到视图abc
我可以在abc()
函数中再次添加查询,但这样做会很懒,会导致性能问题。有没有办法可以在其他功能中访问$store
个对象?
答案 0 :(得分:1)
如果我理解正确,您想从两个地方访问相同的查询。因此,将商店提取到另一种方法,如
private function store()
{
$minutes = 10; // set here
return Cache::remember('users', $minutes, function () {
return Store::(query)(to)(rows)->first();
});
}
此外,我有cached查询。所以它会在一个被定义的时间执行一次。
然后从其他两种方法访问它,例如
public function index()
{
$store = $this->store();
return view('store.index', compact('store'));
}
public function abc()
{
$store = $this->store();
return view('store.abc', compact('store'));
}
答案 1 :(得分:0)
尝试以下方法。没有测试,但它应该适合你。
class AController
{
public function getStore()
{
$store = Store::(query)(to)(rows)->first();
return compact('store');
}
public function index()
{
return view('store.index', $this->getStore());
}
public function abc()
{
return view('store.abc', $this->getStore());
}
}
答案 2 :(得分:0)
class StoreController extends Controller
{
public function index()
{
return view('admin.store',['data' => $this->getSetting()]);
}
public function getStoreData()
{
//get your data here, for example
$data = Store::where('status',1)->first();
//get all data
//$data = Store::all();
return ($data);
}
}