이 문제를 검색하려고했지만 올바르게 단어를 어떻게 발음해야할지 모르겠다. 그래서 3 개의 테이블이 있습니다. 'breeds', 'breed_features'및 피봇 테이블 'breed_breed_feature' breed_features를 선택한 모든 품종을 얻으려고합니다. 배열의 from에서 from 컨트롤러로 breed_feature id-s를 전달 중입니다. 내 관계가 올바르게 설정되어 있으므로 모든 $ breed-> 기능 및 모든 $ 기능 -> 품종을 얻을 수 있습니다.Laravel 5.4 many to many 관계 쿼리
나는 시도하는 것 :
$featureids = request('features');
$breeds = Breed::with('features')->whereHas('features', function($q) use ($featureids)
{
$q->whereIn('breed_feature_id', $featureids);
})->get();
dd($breeds);
결과가이어야 1 기능이있는 모든 품종 ID-의
$featureids = request('features');
$breeds = Breed::with('features')->whereHas('features', function($q) use ($featureids)
{
$q->where('breed_feature_id', $featureids);
})->get();
dd($breeds);
결과가 배열에서 첫 번째 ID로 기능이있는 모든 품종을 반환 , 쿼리는 심지어 ID의 나머지 부분을 전달하려고하지 않습니다. 나는 1 개 이상을 통과하면
$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);
결과 반환 올바른 품종 난 단지 한 ID를 전달하면 항상 빈 컬렉션을 반환, 쿼리합니다.
도와주세요.
'breed_feature_id'가 1, 2, 3, 4로 설정된 품종을 검색하려고하기 때문에 옵션 3이 비어 있습니다. 1 개 이상을 넘긴다면 각 품종에는 1 개의'breed_feature_id' 만 있습니다. 약 1 년 전에 비슷한 문제가 발생하여'whereHas'를 세 번 사용하거나'reject'를 사용하여 해결할 수있었습니다. – DestinatioN