Я пытаюсь построить сайт купонов в Laravel. У каждого продавца есть свои предложения / купоны. Я был в состоянии напечатать предложения / купоны для продавца на их определенных страницах.
Вот мой запрос
$deals = DB::table('deals')
-> join ('merchants', 'deals.merchant_id', '=', 'merchants.merchant_id')
-> where ('merchant_url_text', $merchant_url_text)
-> get();
Все идет нормально.
Теперь это то, где это начинает становиться сложным.
С каждой сделкой связано еще 2 фигуры. Количество кликов и голосов, связанных со сделками.
Количество кликов находится в таблице, называемой кликами, в которую записывается каждый клик на веб-сайте. Запись клика будет иметь идентификатор клика, связанный с ней. Так что мне нужно было бы получить количество кликов, которое получает каждая сделка.
Вторая часть — это голоса. Голоса вокруг сделки хранятся в deal_votes
Таблица. deal_votes
стол имеет deal_id
, vote
(1
или же 0
)
Как объединить количество кликов и раздачу голосов, чтобы вернуться в одном запросе, чтобы я мог отображать информацию в своем представлении?
У вас есть модели и отношения, созданные для продавцов, сделок, купонов и кликов? Это тривиально, если вы используете модели 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
Я пытаюсь построить сайт купонов в Laravel. У каждого продавца есть свои предложения / купоны. Я был в состоянии напечатать предложения / купоны для продавца на их определенных страницах.
Вот мой запрос
$deals = DB::table('deals')
-> join ('merchants', 'deals.merchant_id', '=', 'merchants.merchant_id')
-> where ('merchant_url_text', $merchant_url_text)
-> get();
Все идет нормально.
Теперь это то, где это начинает становиться сложным.
С каждой сделкой связано еще 2 фигуры. Количество кликов и голосов, связанных со сделками.
Количество кликов находится в таблице, называемой кликами, в которую записывается каждый клик на веб-сайте. Запись клика будет иметь идентификатор клика, связанный с ней. Так что мне нужно было бы получить количество кликов, которое получает каждая сделка.
Вторая часть — это голоса. Голоса вокруг сделки хранятся в deal_votes
Таблица. deal_votes
стол имеет deal_id
, vote
(1
или же 0
)
Как объединить количество кликов и раздачу голосов, чтобы вернуться в одном запросе, чтобы я мог отображать информацию в своем представлении?
У вас есть модели и отношения, созданные для продавцов, сделок, купонов и кликов? Это тривиально, если вы используете модели 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