モデルの関係に沿っていくつかのクエリを実行するために、いくつかのモデル、関係、およびモデルへの動的スコープを含む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:) ディレクティブを使用するとどうなりますか? おそらく別のディレクティブを使用する必要がありますか?
ありがとう。