2017-10-10 3 views
0

이 쿼리의 목표는 "email_small"이라는 이름의 이미지 유형이있는 모든 Stories를 찾는 것입니다. 모든 이야기에 이미지가있는 것은 아닙니다.3 개의 테이블을 사용하는 Laravel Eloquent 하위 쿼리

는 세 개의 테이블/참여 모델이 있습니다 이야기는 많은 이야기를 이미지

/* Story model */ 
public function storyImages() 
{ 
    return $this->hasMany(StoryImage::class); 
} 

이야기의 이미지를 하나 개의 이미지 형식을 가지고 있지만

을 가질 수 Storys, StoryImage, 그리고이 imageTypes

/* Storyimage model */ 
public function imgtype() 
{ 
    return $this->belongsTo('App\Imagetype','imagetype_id'); 
} 

이미지가 포함 된 모든 스토리를 선택하는 두 번째 단계로 이동할 수 있지만 하위 쿼리 내에서 사라졌습니다.

$stories = Story::whereHas('storyImages', function($query){ 
       $query->where($query->imgtype()->name, '=', 'email_small'); 
      }) 
      ->->get(); 

답변

1

두 가지 검색어를 사용할 수없는 이유는 무엇입니까? 이름 "email_small"와 imgType의 ID를 선택하고 해당 ID를 확인 :

$id = Imagetype::where('name', 'email_small')->first()->id; 
$stories = Story::whereHas('storyImages', function($q) use ($id) { 
    $q->where('imagetype_id', $id); 
})->get(); 

난 당신이 하나의 함수 Laravel 모든 것을 쓸 경우에도 몇 가지 질의를 계속 전화 것이라고 확신합니다.

+0

아 맞습니다. 아마 그럴 것입니다. 나는 그 생각을 너무 과소 평가했다. – Ravioli87