私は、指定されたすべてのサービスIDを持つユーザーのリストを返すAPIエンドポイントで作業しています。私の場合は
:
- ユーザーは多くのサービスを持つことができます
- テーブル: 'ユーザー'、 'サービス'、 'service_user'
私はにVueのJSを経由して配列を渡していますが例えば私のエンドポイント:
/endpoint/32,35,38
私のクエリは現在、次のとおりです。
$servicesArray = explode(',', $services);
$users = User::whereHas('services', function ($query) use ($servicesArray) {
foreach ($servicesArray as $key => $value) {
$query->where('id', $value);
}
})
->get();
問題は、ユーザーが正しいサービスを持っていても、今すぐ結果を返すようだということです。私の関係は問題ありません。エンドポイントにサービスを1つだけ渡すと、そのサービスが割り当てられているユーザーが正しく返されます。以前はwhereInを使用しましたが、エンドポイント配列で指定されたすべてのサービスを持つユーザーのみを表示する必要があります。
私が持っているものが予想どおりに動作しない理由は何ですか?
@BenRoobただし、配列値のいずれかが一致するすべての結果が返されます。私はすべての配列のフィールドが一致しているところだけを返す必要があります。 – Lovelock
申し訳ありませんが、本当にそれを逃した...私はたわごとを削除します! – BenRoob