如何在laravel中访问一个函数的数据到另一个函数

时间:2017-01-29 20:23:21

标签: php laravel laravel-5 laravel-5.3

好的问题是这样的

我在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个对象?

3 个答案:

答案 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);
    }    
}