Получить данные из нескольких таблиц Laravel

Я пытаюсь построить сайт купонов в 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)

Как объединить количество кликов и раздачу голосов, чтобы вернуться в одном запросе, чтобы я мог отображать информацию в своем представлении?

3

Решение

У вас есть модели и отношения, созданные для продавцов, сделок, купонов и кликов? Это тривиально, если вы используете модели 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
4

Другие решения

Я пытаюсь построить сайт купонов в 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)

Как объединить количество кликов и раздачу голосов, чтобы вернуться в одном запросе, чтобы я мог отображать информацию в своем представлении?

3

У вас есть модели и отношения, созданные для продавцов, сделок, купонов и кликов? Это тривиально, если вы используете модели 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

active «data-shortcut =» A
самый старый «data-shortcut =» O
голосует «data-shortcut =» V
4
По вопросам рекламы [email protected]