Laravel雄辩查询,反映基于另一个表数据的更新数据

时间:2018-02-19 06:29:04

标签: php mysql laravel orm eloquent

我已经对这个主题进行了广泛的搜索,但基于我对laravel和雄辩的一点知识(我是新手),由于很多信息I&#39,我对如何完全感到困惑。读完了。

我有两张桌子:产品和logrent。

products->[id, name, stock]
logrent->[id, product_id, user_id, action]

当产品被出售时,在logrent表上生成一个寄存器,其中包含此操作的值(1表示租用,2表示退回租用产品)

我想构建一个反映每个产品上的操作的雄辩查询,根据logrent表上的租金/回报更新实际股票价值(如果可能,在另一个虚拟列中更新)

我怎么能做到这一点?

修改

这就是我想要的,但在Eloquent中,我能实现这一目标吗?如何?

select jogos.id, jogos.titulo, (jogos.qt + (select sum(case
fluxos.tipoacao when 2 then 1 when 1 then -1 end) from `fluxos` where
fluxos.jogo_id=jogos.id)) as stock from jogos, fluxos group by id;

1 个答案:

答案 0 :(得分:0)

在学习了一点之后,我能够接近我想要的东西。我已经为这个查询安装了一个sql格式,所以我能够以“原始”格式将其转换为雄辩,但我希望它能够以纯粹的口才。有路径吗?

$data = \DB::table("jogos")
      ->select("jogos.id", "jogos.titulo", "jogos.qt",  
           \DB::raw("(select 
               sum(case fluxos.tipoacao when 2 then 1 when 1 then -1 end) 
                   from `fluxos` where fluxos.jogo_id=jogos.id) as stock")->get()