从多个表Laravel中获取数据

时间:2016-03-09 23:46:06

标签: php laravel laravel-5.2 laravel-query-builder

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

这是我的查询

const one$ = Rx.Observable.from([1, 2, 3, 4, 5, 6]);
const two$ = Rx.Observable.from(['one']);
const three$ = Rx.Observable.from(['a', 'b']);

zipAndContinue(one$, two$, three$)
    .subscribe(x => console.log(x));

// >> [ 1, 'one', 'a' ]
// >> [ 2, null, 'b' ]
// >> [ 3, null, null ]
// >> [ 4, null, null ]
// >> [ 5, null, null ]
// >> [ 6, null, null ]

到目前为止一切顺利。

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

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

点击次数位于一个名为点击的表格中,用于记录网站上的每次点击。点击记录将有一个与之关联的点击ID。因此,我需要获得每笔交易获得的点击次数。

第二部分是投票。交易周围的投票存储在$deals = DB::table('deals') -> join ('merchants', 'deals.merchant_id', '=', 'merchants.merchant_id') -> where ('merchant_url_text', $merchant_url_text) -> get(); 表中。 deal_votes表格包含deal_votesdeal_idvote1

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

1 个答案:

答案 0 :(得分:4)

您是否为商家,优惠,优惠券和点击设置了模型和关系?如果您使用具有关系的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