我有一个 Laravel 项目,其中包含一些模型、关系和动态范围到模型中,以沿模型关系执行一些查询。我想使用 Lighthouse 包使用 GraphQL 端点查询这些模型。有没有办法从 GraphQL 模式中调用这些动态范围?
我已经尝试了指令 @where(clause: "...") 没有成功。
这是我的模型代码的范围:
class Solicitud extends Model {
...
public function movimientos()
{
return $this->hasMany('App\Movimiento', 'id', 'id_solicitud_movimiento');
}
public function scopeConEstado($query, $id_estado)
{
$query->whereHas('movimientos', function($q) use ($id_estado) {
$q->where('id_solicitud_estado', '=', $id_estado);
})->get();
}
}
当我运行 GraphQL 查询时,我收到一条 SQL 错误消息:
SQLSTATE[22P02]: Invalid text representation: 7 ERROR: la sintaxis de entrada no es válida para integer: «id_estado» (SQL: select * from \"solicitud\" where exists (select * from \"solicitud_movimientos\" where \"solicitud\".\"id_solicitud_movimiento\" = \"solicitud_movimientos\".\"id\" and \"id_solicitud_estado\" = id_estado))
但是,如果我在代码中将 $id_estado 更改为简单的 1(例如),对于具有 id_solicitud_estado = 1 的项目的任何项目,我都会得到预期的结果,并且没有错误。
当我使用修补程序启动调用范围的查询时,它可以工作。
Solicitud::conEstado(1)->get();
我究竟做错了什么?Lighthouse 的 @where(clause:) 指令会发生什么?也许应该使用另一个指令?
谢谢。