Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Работу нашел, тема не акктуальна. Всем спасибо за отклики.
Сорри, не получил ничего, возможно, потому что почта указана неверно. marat_khuzin@mail.ru
Опыт взаимодействия с фреймворком Laravel - 2+ года, начинал с 4 версии.
Работаю на Ubuntu 14.04 в PhpStorm IDE.
БД - mysql. Работал с Redis, memcached, rabbitmq.
Javascript, jquery, ajax запросы.
Vcs - Git.
Английским владею на достаточном уровне, чтобы читать документацию и обучаться на иноземных ресурсах.
Есть опыт разработки в команде.
Несколько моих проектов можно посмотреть тут:
http://bitbucket.com/marat_khuzin
Почта - marat_khuzin@maik.ru
Skype - marikkhuzin
так я и понял, что все должно быть ок. Но
dd($nums);
дает:
array(2) {
[0]=>
object(stdClass)#179 (1) {
["count"]=>
string(1) "2"
}
[1]=>
object(stdClass)#180 (1) {
["count"]=>
string(1) "3"
}
}
т.е. нет тут поля category? только count осталось. я что-то упустил? или туплю?
в общем...использовал ваш первый код, только в таком виде
SELECT categories.*, COUNT(1) AS count FROM categories JOIN posts ON category_id = categories.id GROUP BY categories.id
и пришел к такому виду в Laravel
$catpostsnum = DB::table('categories')->join('posts', 'category_id', '=', 'categories.id')->groupBy('categories.id')->select(DB::raw('count(1) AS count'))->get();
все работает.
однако тут же появилась другая проблема, как заставить все выводиться в цикле, как мне нужно.
$category = Category::all();
$nums = DB::table('categories')->join('posts', 'category_id', '=', 'categories.id')->groupBy('categories.id')->select(DB::raw('count(1) AS count'))->get();
foreach ($category as $cat)
{
echo $cat->category;
}
foreach ($nums as $num)
{
echo $num->count;
}
как вы поняли, выводится все в виде:
Первая категория
Вторая категория
(2)
(3)
вот теперь думаю, как foreach вложить в foreach. вроде такого еще не видел. нет никаких мыслей?
или из запроса с количеством новостей можно как-то и названия вырезать? просто в phphmyadmin при запросе
SELECT categories.*, COUNT(1) AS count FROM categories JOIN posts ON category_id = categories.id GROUP BY categories.id
имеется оба нужных поля Category и Count.
Точно, перед DESC запятая же стоит... Вот и ошибка.
так-c? По первому коду вылетает ошибка:
Argument 1 passed to Illuminate\Database\Grammar::columnize() must be an array, string given, called in /var/www/guestbook.dev/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php on line 112 and defined
со вторым запросом даже phpmyadmin не справился. ошибка USE NEAR. Порядок неправильный.
сейчас буду долбать код... вроде выход находится постепенно.
ваш код не проверял, так как хотелось бы тоже самое, но с использованием Eloquent (туплю я с ним).
спасибо за подсказку, буду пробовать, как появится время, потом отпишусь.
join уже включен, при создании Отношений.
Думаю, должно быть что-то похожее на (так, навскидку):
$categories = Category::with('post')->get(); // собрали все названия категорий
foreach ($categories as $category)
{
echo $category->category // здесь выводится название категории
' . (' // здесь лепим скобку '(' дизайна
count ((Category::with('post')->where('category', '=', $category->category)->get())) // здесь выводим кол-во новостей в категории
.')'; // Здесь лепим закрывающую скобку ')' дизайна
}
На выходе должно получиться что-то типа:
Первая категория (15)
Вторая категория (20)
и т.д.
как я уже и писал.
То бишь, сначала соберем все названия категорий, а затем в цикле выводим названия категории и кол-во новостей в ней
Либо вместо get () в цикле использовать count ().... Только как посчитать то, что именно надо?....
Доброго времени суток.
Суть проблемы такова:
Использую Laravel 4
Имеются две таблицы: Categories и Posts. Таблицы связаны между собой, т.е. все работает как надо, на страницах отлично выводятся посты и названия категорий, соответствующих постам.
Структура Категорий:
id, category (то бишь название), и таймстампы.
Структура Постов:
id, title, postmini, post, category_id, и таймстампы.
Хотел бы спросить знающих, как с использованием Eloquent подсчитать количество новостей в каждой категории, чтобы вывести их в виде Название категории (кол-во постов).
Примерно так:
Первая категория (15)
Вторая категория (12)
Третья категория (17)
Спасибо.
Страницы 1