如何在laravel 4.2中执行此请求:
SELECT
`p`.`id_pseudo`,
`nom`,
`prenom`,
`email`,
`code_court_etat`,
DATE_FORMAT(pv.date_visite, '%d/%m/%Y %h:%i') AS date_derniere_visite,
COUNT(pp.id_pseudo_produit) AS qte_produit
FROM
`pseudo` AS `p`
LEFT JOIN
`pseudo_produit` AS `pp` ON `p`.`id_pseudo` = `pp`.`id_pseudo`
LEFT JOIN
`pseudo_visite` AS `pv` ON `pv`.`id_pseudo` = `p`.`id_pseudo`
AND `date_visite` = select max(date_visite) from pseudo_visite where id_pseudo = p.id_pseudo
GROUP BY `p`.`id_pseudo` , `nom` , `prenom` , `email` , `code_court_etat` , `date_derniere_visite`
ORDER BY `p`.`nom` ASC , `p`.`prenom` ASC
我试过了:
$requete = DB::table('pseudo as p')
->leftjoin('pseudo_produit as pp', 'p.id_pseudo', '=', 'pp.id_pseudo')
->leftJoin('pseudo_visite as pv', function($join)
{
$join->on('pv.id_pseudo', '=', 'p.id_pseudo')
->where('date_visite', '=', DB::raw('select max(date_visite) from pseudo_visite where id_pseudo = p.id_pseudo'));
})
->select('p.id_pseudo', 'nom', 'prenom', 'email', 'code_court_etat',
DB::raw('date_format(pv.date_visite, "%d/%m/%Y %h:%i") as date_derniere_visite'),
DB::raw('count(pp.id_pseudo_produit) as qte_produit'))
->orderby('p.nom','asc')->orderby('p.prenom', 'asc')
->groupBy('p.id_pseudo', 'nom', 'prenom', 'email', 'code_court_etat', 'date_derniere_visite');
没有成功。因为子查询中出现了一个不需要的引号。
任何帮助将不胜感激。
多米尼克
答案 0 :(得分:0)
也许不是您正在寻找的答案,但您不会 使用来使用查询生成器只是因为它是Laravel。在查询生成器效率低下或无效的情况下,您可以使用原始查询。
看看Database Documentation。您已经有了查询,因此您可以运行它:
$results = DB::select('...');
您的$results
将是返回行的数组。