如何对多个表进行查询而不使用join?就像下面这个例子:
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)
这个查询将返回来自"categories"表的两个字段,但是带有来自另一个表的条件。到目前为止,我最接近雄辩的是:
$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')
查询返回一个集合,所以关系是正确的。
总之,我正在寻找一种方法来转换eloquent从 创建的查询。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'
这两个表之间的关系还不清楚。如果你能在这个问题上展示你的雄辩的模型,我们就能帮助你。
但通常你可以这样做:
$categorias = AulaCategorias::with(['categoria' => function($query){
$query->select('id_categoria', 'titulo' )
}])->whereIn('id_aula', array(1,2,3,4))->get();
如果没有帮助,请从您的模型中添加两个表之间的关系。