2016-10-18 2 views
2

Как я могу сделать запрос для нескольких таблиц без использования соединения? Как и в этом примере:Eloquent associate without 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) 

Этот запрос возвращает два поля из таблицы «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(); 

Если это не помогает, пожалуйста, добавьте отношения между двумя таблицами из ваших моделей.