私はこの問題を検索しようとしましたが、正しく言葉を語る方法がわかりません。 私は3つのテーブルを持っています。 'breeds'、 'breed_features'、ピボットテーブル 'breed_breed_feature' breed_featuresを選択したすべての品種を取得しようとしています。 配列からfromのfromコントローラにbreed_feature id-sを渡しています。 私の関係は正しく設定されているので、私はすべての$ breed-> features とすべての$ feature-> breedsを得ることができます。Laravel 5.4多対多関係クエリ
$featureids = request('features');
$breeds = Breed::with('features')->whereHas('features', function($q) use ($featureids)
{
$q->whereIn('breed_feature_id', $featureids);
})->get();
dd($breeds);
結果は、少なくとも機能の1 ID-S
$featureids = request('features');
$breeds = Breed::with('features')->whereHas('features', function($q) use ($featureids)
{
$q->where('breed_feature_id', $featureids);
})->get();
dd($breeds);
結果は配列の最初のidを持つ機能を持っているすべての品種を返す必要があり、すべての品種である:私が試してみました何
、クエリはIDの残りの部分を渡そうとしません。
$featureids = request('features');
$breeds = Breed::with('features')->whereHas('features', function($q) use ($featureids)
{
foreach ($featureids as $f)
{
$q->where('breed_feature_id', $f);
}
})->get();
dd($breeds);
結果は、私は照会するだけで1 IDを渡す場合、私は1以上のものを渡した場合、それは常に空のコレクションを返す正しい品種を返します。
お願いします。
オプション3は、 'breed_feature_id'が1、2、3、4に設定された品種を検索しようとするため空です。 1を超えて渡すと、各品種には1つの 'breed_feature_id'しかありません。 約1年前、私は同様の問題を抱え、 'whereHas'を3回使って解決するか、' reject'を使って解決することができました。 – DestinatioN