我想弄清楚如何为 Laravel Nova Lens 创建查询。我知道底层查询实际上是这里重要的,但我也无法弄清楚。我正在尝试从关系中检索值,这是我的表:
accounts
statements
statement_versions
我想要做的是从statement_versions
表中检索一个值,并将其与镜头中的一个帐户相关联。所以,我想balance
从我的 中检索statement_versions
,并将其与一个帐户相关联。以下是我的关系是如何定义的:
// Accounts
public function statements()
{
return $this->hasMany(Statement::class);
}
public function statementVersions()
{
return $this->hasManyThrough(StatementVersion::class, Statement::class);
}
// Statements
public function accounts()
{
return $this->belongsTo(Account::class);
}
public function statementVersions()
{
return $this->hasMany(StatementVersion::class);
}
// StatementVersion
public function accounts()
{
return $this->belongsToThrough(Account::class, Statement::class);
}
public function statements()
{
return $this->belongsTo(Statement::class);
}
这是我尝试创建的镜头:
public static function query(LensRequest $request, $query)
{
return $request->withOrdering($request->withFilters(
$query->select([
'statement_version.balance',
])
->join('statements', 'statement.id', '=', 'statement_version.statement_id')
->join('accounts', 'accounts.id', '=', 'statement.account_id')
->orderBy('balance', 'desc')
->groupBy('accounts.id', 'accounts.name')
));
}
这将返回一个错误1066 Not unique table/alias: 'accounts'
。我将如何使这个查询和这个镜头工作?