Php 创建Laravel Nova镜头-不在对象上下文中时使用$this
我正在试用幼虫新星,特别是镜头 我已经跟着导游走了 但它抱怨在这一行中使用了$thisPhp 创建Laravel Nova镜头-不在对象上下文中时使用$this,php,laravel,laravel-5,Php,Laravel,Laravel 5,我正在试用幼虫新星,特别是镜头 我已经跟着导游走了 但它抱怨在这一行中使用了$this $query->select($this->columns()) 带着错误 $this when not in object context 这是密码 <?php namespace App\Nova\Lenses; use Laravel\Nova\Fields\ID; use Illuminate\Http\Request; use Laravel\Nova\Fields\
$query->select($this->columns())
带着错误
$this when not in object context
这是密码
<?php
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)
{
return $request->withOrdering($request->withFilters(
$query->select($this->columns())
->join('licenses', 'users.id', '=', 'licenses.user_id')
->orderBy('revenue', 'desc')
->groupBy('users.id', 'users.name')
));
}
/**
* Get the columns that should be selected.
*
* @return array
*/
protected function columns()
{
return [
'users.id',
'users.name',
DB::raw('sum(licenses.price) as revenue'),
];
}
/**
* Get the fields available to the lens.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function fields(Request $request)
{
return [
ID::make('ID', 'id'),
Text::make('Name', 'name'),
Number::make('Revenue', 'revenue', function ($value) {
return '$'.number_format($value, 2);
}),
];
}
/**
* Get the filters available for the lens.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function filters(Request $request)
{
return [];
}
/**
* Get the URI key for the lens.
*
* @return string
*/
public function uriKey()
{
return 'most-profitable-users';
}
}
问题是在静态函数中使用$this(一个不知道$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')
));
}
...