从多个表中获取数据 Laravel

Get Data from Multiple Tables Laravel

我正在尝试在 Laravel 中建立一个优惠券网站。每个商家都有自己的 deals/coupons。我已经能够在他们的特定页面上为商家打印 deals/coupons。

这是我的查询

$deals = DB::table('deals')
    -> join ('merchants', 'deals.merchant_id', '=', 'merchants.merchant_id')
    -> where ('merchant_url_text', $merchant_url_text)
    -> get();

到目前为止一切顺利。

现在事情开始变得复杂了。

每笔交易还有 2 件与之关联的商品。与交易相关的点击次数和投票数。

点击计数在一个名为 clicks 的 table 中,它记录了网站上的每次点击。点击记录将有一个与之关联的点击 ID。所以我需要计算每笔交易获得的点击次数。

第二块是选票。围绕交易的投票存储在 deal_votes table 中。 deal_votestable有deal_idvote10

如何在同一个查询中合并点击计数和对 return 的投票,以便我可以在我的视图中显示信息?

您是否为商家、交易、优惠券和点击设置了模型和关系?如果您使用具有关系的 Eloquent 模型,这是微不足道的,文档在这里:https://laravel.com/docs/5.2/eloquent-relationships

这看起来像:

$merchant = Merchant::where('merchant_url_text', $merchant_url_text)
  ->with('deals','deals.votes','deals.clicks')
  ->first();

with() 函数将所有嵌套信息(即查询 joins)添加到单个查询中。

在您看来:

@foreach($merchant->deals as $deal)

   Deal: {{$deal->name}}

   Clicks: {{count($deal->clicks)}}

   Votes: {{$deal->votes->sum('vote')}}

@endforeach