创建Laravel Nova Lens-在不在对象上下文中时使用$ this

时间:2018-09-11 09:02:52

标签: php laravel laravel-5

我正在尝试幼虫新星,特别是镜头

我已遵循指南https://nova.laravel.com/docs/1.0/lenses/defining-lenses.html

但它抱怨在此行中使用$ this

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="main">
    <div class="computation">
        <input type="number" class="a"> +
        <input type="number" class="b"> =
        <input type="number" class="c">
    </div>
</div>

<button id="add">Add more</button>

错误

   $query->select($this->columns())

这是代码

$this when not in object context

我还需要配置其他东西吗?

1 个答案:

答案 0 :(得分:1)

问题是您在静态函数(一个不了解$this上下文的函数)中使用$ this。我建议您在静态函数内创建一个实例(如果您确实需要静态函数)。     

namespace App\Nova\Lenses;

use Laravel\Nova\Fields\ID;
use Illuminate\Http\Request;
use Laravel\Nova\Fields\Text;
use Laravel\Nova\Lenses\Lens;
use Laravel\Nova\Fields\Number;
use Illuminate\Support\Facades\DB;
use Laravel\Nova\Http\Requests\LensRequest;

class MostValuableUsers extends Lens
{
    /**
     * Get the query builder / paginator for the lens.
     *
     * @param  \Laravel\Nova\Http\Requests\LensRequest  $request
     * @param  \Illuminate\Database\Eloquent\Builder  $query
     * @return mixed
     */
    public static function query(LensRequest $request, $query)
    {
        $mostValuableUser = new MostValuableUsers();

        return $request->withOrdering($request->withFilters(
            $query->select($mostValuableUser->columns())
                  ->join('licenses', 'users.id', '=', 'licenses.user_id')
                  ->orderBy('revenue', 'desc')
                  ->groupBy('users.id', 'users.name')
        ));
    }

    ...