2016-10-18 1 views
2

join을 사용하여 여러 테이블에 대한 쿼리를 만들려면 어떻게해야합니까? 이 예와 같이 :JOIN없이 Eloquent associate

select c.id_categoria, c.titulo 
from categorias c, aulas_categorias ac 
where c.disciplina='N' and c.id_categoria=ac.id_categoria and ac.id_aula in (1,2,3,4) 

이 쿼리는 "categorias"테이블에서 두 개의 필드를 반환하지만 다른 테이블의 조건을 반환합니다.

$categorias = AulaCategorias 
      ::with('categoria') 
      ->select('categorias.id_categoria', 'categorias.titulo') 
      ->whereIn('aulas_categorias.id_aula', array(1,2,3,4)) 
      ->get(); 

내가 쿼리 컬렉션을 반환

->select('categorias.id_categoria', 'categorias.titulo') 

선택 선을 제거하면이 쿼리는

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'categorias.id_categoria' in 'field list' 
in PDOConnection.php line 77 
at PDO->prepare('select `categorias`.`id_categoria`, `categorias`.`titulo` from `aulas_categorias` where `aulas_categorias`.`id_aula` in (?, ?, ?, ?)', array()) in PDOConnection.php line 77 

를 반환하므로 : 지금까지 내가 웅변에있어 그 가장 가까운이었다 관계는 괜찮습니다. 당신이 보여줄 수있는 경우 요약에서

, 나는 두 테이블 사이

select `categorias`.`id_categoria`, `categorias`.`titulo` 
from `aulas_categorias`, `categorias` 
where `aulas_categorias`.`id_aula` in (?, ?, ?, ?) 
and 'categorias'.'id_categorias'='aulas_categorias'.'id_categorias' 
and 'categorias'.'disciplina'='N' 

답변

1

관계에

select `categorias`.`id_categoria`, `categorias`.`titulo` 
from `aulas_categorias` 
where `aulas_categorias`.`id_aula` in (?, ?, ?, ?) 

에서 웅변가 생성하는 쿼리를 설정하는 방법을 찾고 있어요 것은 명확하지 않다 당신의 설득력있는 모델이 있다면, 우리는 당신을 도울 수있을 것입니다.

그러나 일반적으로이 같은 것을 할 수있다 : 그 문제가 해결되지 않으면

$categorias = AulaCategorias::with(['categoria' => function($query){ 
     $query->select('id_categoria', 'titulo') 
}])->whereIn('id_aula', array(1,2,3,4))->get(); 

, 당신의 모델에서 두 테이블 사이의 관계를 추가하시기 바랍니다.