2017-06-17 64 views
-1

请帮帮我, 我有查询: SELECT * FROM(SELECT * FROM产品ORDER BY ID DESC LIMIT 20),结果ORDER BY折扣DESC LIMIT 14如何从子查询中laravel使用查询生成器中选择5

那么,如何在laravel 5中转换成查询生成器。 tks!

+0

看看[this](https://stackoverflow.com/questions/24823915/how-to-select-from-subquery-using-laravel-query-builder),可能有帮助。 – molagbal

+0

tks的家伙,我做到了 –

回答

0

试着这么做:

产品::排序依据( '身份证', '递减') - >取(20) - >排序依据( '折扣', '降序') - >取(14) - >得到();

+0

tks的家伙,我试过了,但结果不orderBy('折扣')。它给出了14条记录('id','desc')。你有其他的制作吗? –

+0

您可以使用: $ q = Products :: orderBy('id','desc') - > take(20) - > get(); 之后 $ test = $ q-> sortByDesc('nome') - > take(14); 看看这个作品 – itepifanio

0

使用查询构建器和导入(使用)数据库,您可以构建和获取所需的结果。

use DB; 

$result = DB::table(
    DB::raw("(" . 
     DB::table('products') 
      ->select('*') 
      ->orderBy('id', 'desc') 
      ->limit(20) 
      ->toSql() 
     . ") as result" 
    ) 
) 
->select('*') 
->orderBy('discount', 'desc') 
->limit(14) 
->get(); 

table()选择要查询的表。在这种情况下,我们正在构建一个单独的SQL语句来获取表。

select()您希望看到的列。

orderBy($ column,$ direction)其中$ column是您要订购的列的名称,$ direction是订单,desc或asc。

limit($ limit)只返回$ limit项目到结果集。

toSql()以字符串形式返回当前QueryBuilder SQL语句。

get()返回集合中的数据。

此外在缺少的折扣顺序中添加。

+0

请添加一些上下文到你的答案。只是代码通常不会为好的答案 –

+0

我认为你错过了“ORDER BY折扣DESC” –