2016-11-15 38 views
0

请帮帮我。Postgres函数WITH在Laravel QueryBuilder中

我已经得到了原始的SQL

WITH collections AS (
    SELECT 
     ... 
    FROM 
     ... 
) 
SELECT 
    ... 
FROM collections c1 
LEFT JOIN collections c2 
    ... 

我如何使用Laravel的QueryBuilder写呢?

+1

Laravel QueryBuilder不支持'WITH'语法。你有2个选项:重写查询而不用'WITH'或使用接受原始sql查询的DB :: select()。 – AlexM

回答

0

您可以使用Laravel的查询生成器的RAW方法(https://laravel.com/docs/5.3/queries#raw-expressions)。只需谨慎处理潜在的SQL注入漏洞。

+0

现在我正在这样做: $ queryResult = DB :: select(“ with collections AS( SELECT .....))”; –

+0

您可以发布您提交的整个查询语句吗? – Ronald

+0

'$ QueryResult中= DB ::选择(” 与集合AS( SELECT tcm.shop_id,... FROM template_collection_menu AS中医 LEFT JOIN template_collection AS TC ON tc.id = tcm.template_collection_id WHERE tcm.shop_id IN (:mainShopId,:currentShopId) ORDER BY tcm.position ASC ) SELECT COALESCE(c2.shop_id,c1.shop_id)作为shop_id,... FROM集合的c1 LEFT JOIN集合C2 ON c2.template_collection_id = C1 .template_collection_id AND c1.shop_id =:mainShopId AND c2.shop_id =:currentShopId WHERE c1.shop_id =:mainShopId “,['mainShopId'=> $ mainShopId,...]) ;' –