Unir várias tabelas no Query Builder é muito simples:
DB::table('projects')
->select('tasks.*')
->join('tasks', 'tasks.project_id', 'projects.id')
Mas por enquanto o cliente me pede para evitar join
o uso:
SELECT tasks.*
FROM projects, tasks
WHERE tasks.project_id = projects.id
Como fazer isso?
O uso do método do Builder from
é uma má ideia:
from
aceita apenas uma string (um nome de tabela), não arrayfrom
matatable
efrom
escrito antes
PS Por favor, não perca tempo descrevendo como o Eloquent funciona - preciso saber como fazê-lo apenas com o Laravel Query Builder. Se for possível com o LQB, é claro
Você pode tentar o carregamento rápido usando modelos eloquentes em vez do construtor de consultas de banco de dados.
No seu caso, criaremos 2 modelos. O comando a seguir criará os arquivos de modelo.
Presumo que você já tenha seus arquivos de migração, então vamos pular as migrações.
Na próxima etapa, você precisará definir as relações no modelo.
app\Modelos\Projeto.php
app\Modelos\Tarefa.php
Por fim, no seu controlador, você pode recuperar tarefas com as informações do projeto:
embora eu diria para usar a sintaxe Join, já que é muito mais claro o que você está fazendo e qualquer diferença de desempenho é insignificante se nenhuma, se você realmente quiser construir sua consulta, você pode passar para qualquer método de consulta, uma instância "bruta" para que ele construa sua consulta como está
resulta em:
select `tasks`.* from projects, tasks where `tasks`.`project_id` = `projects`.`id`