5

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

这是我的查询

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

到目前为止,一切都很好。

现在这就是它开始变得复杂的地方。

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

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

第二部分是选票。围绕交易的投票存储在deal_votes表格中。该deal_votes表有deal_id, vote(10)

如何结合点击计数和交易投票以在同一个查询中返回,以便我可以在我的视图中显示信息?

4

1 回答 1

7

您是否为商家、交易、优惠券和点击设置了模型和关系?如果您使用具有关系的 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()函数将所有嵌套信息(即查询join)添加到单个查询中。

在您看来:

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

   Deal: {{$deal->name}}

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

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

@endforeach
于 2016-03-10T00:01:51.707 回答