2016-10-18 53 views
2

如何在不使用连接的情况下对多个表进行查询?像这个例子中一样:没有加入的雄辩关联

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(); 

而这个查询返回

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') 

查询返回一个集合,所以关系是好的。

在总结,我正在寻找一种方法来

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

把那雄辩创建查询到两个表之间

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

关系不明确,如果你能证明你的在问题中雄辩的模型,我们将能够帮助你。

但总的来说,你可以做这样的事情:

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

如果没有帮助,请向您的模型添加两个表之间的关系。