Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 14.01.2014 11:39:42

Виталий

Конструктор запросов и count

Есть одна таблица с полями
id
par
message

где у par 0 -  если это новость и любое другое число это комментарий к новости.

Подскажите пожалуйста как мне подсчитать одним запросом количество комментариев к новости?

#2 14.01.2014 14:00:00

Artdevue
Откуда: Kiev
Сообщений: 119
Сайт

Re: Конструктор запросов и count


If you think it’s expensive to hire a professional to do the job, wait until you hire an amateur.

Не в сети

#3 14.01.2014 19:50:53

Виталий

Re: Конструктор запросов и count

Тут только count, а мне необходимо получить все новости и одновременно подсчитать к каждой кол-во комментариев.

#4 14.01.2014 21:40:37

Re: Конструктор запросов и count

Попробуйте так:

$query = DB::table('table as news')
	->select('news.id', 'news.par', 'news.message')
	->addSelect(DB::raw('count(comments.id) as comments_count'))
	->leftJoin('table AS comments', 'comments.par', '=', 'news.id')
	->where('news.par', 0)
	->groupBy('news.id');

var_dump($query->get());

Не в сети

#5 15.01.2014 05:33:55

Виталий

Re: Конструктор запросов и count

grachov пишет:

Попробуйте так:

$query = DB::table('table as news')
	->select('news.id', 'news.par', 'news.message')
	->addSelect(DB::raw('count(comments.id) as comments_count'))
	->leftJoin('table AS comments', 'comments.par', '=', 'news.id')
	->where('news.par', 0)
	->groupBy('news.id');

var_dump($query->get());

Спасибо большое! Это работает.

#6 15.01.2014 08:32:47

Artdevue
Откуда: Kiev
Сообщений: 119
Сайт

Re: Конструктор запросов и count

Виталий пишет:

Тут только count

Там можно заметить не только count, так-же ниже пример

$total = DB::table('users')->sum('votes');

Если честно, вопрос ваш я не понял

Есть одна таблица с полями

Теперь вы делаете джойн на другую таблицу?

где у par 0 -  если это новость и любое другое число это комментарий к новости.

т.е. я так понял, что всё в одной табличке и новости и комменты. И если  - 0, то это новость, если любое другое число, то это комментарий к новости.

Вообще, я бы создал поле в новостях к примеру count_comment, и писал туда число комментариев к данной новости, таким образом вы избавитесь от куча джойнов в дальнейшем.

Изменено Artdevue (15.01.2014 08:34:36)


If you think it’s expensive to hire a professional to do the job, wait until you hire an amateur.

Не в сети

#7 15.01.2014 14:05:36

Виталий

Re: Конструктор запросов и count

Artdevue пишет:
Виталий пишет:

Тут только count

Там можно заметить не только count, так-же ниже пример

$total = DB::table('users')->sum('votes');

Если честно, вопрос ваш я не понял

Есть одна таблица с полями

Теперь вы делаете джойн на другую таблицу?

где у par 0 -  если это новость и любое другое число это комментарий к новости.

т.е. я так понял, что всё в одной табличке и новости и комменты. И если  - 0, то это новость, если любое другое число, то это комментарий к новости.

Вообще, я бы создал поле в новостях к примеру count_comment, и писал туда число комментариев к данной новости, таким образом вы избавитесь от куча джойнов в дальнейшем.

Да, вы правильно поняли. Всё в одной таблице. Вообще хорошая идея с полем, то есть я могу потом его
->decrement
->increment
при добавлении сообщения?

Подвал раздела