Laravel по-русски
      
      
    Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Добрый день. Пытаюсь освоить ООП в php и Laravel в частности. Взял в инете бесплатный шаблон и потихоньку пытаюсь запрограммировать всё. Прошу помочь и может дадите какие советы между делом.
Вопрос:
По шаблону у меня выводятся категории и в скобочках количество постов в этих категориях.
Вот так:
Категории
   Web дизайн (20)
   Лендинг (20)
   Технологии (20)
   Бизнес (20)
Как мне получить количество постов в каждой категории используя Eloquent?
У меня есть таблицы:
categories с столбцами id, title, alias
blogs с столбцами id, title, alias, category_id
category_id таблицы blogs естественно ссылается на id таблицы categories.
В моделях Blog и Category я сделал связь один ко многим
Blog.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Blog extends Model
{
    public function category()
    {
        return $this->belongsTo('App\Category', );
    }
}Category.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Category extends Model
{
    public function Blog()
    {
        return $this->hasMany('App\Blog', 'category_id');
    }
}В контроллере я получаю список категорий вот так:
<?php
namespace App\Http\Controllers;
use App\Repositories\CategoriesRepository;
use App\Repositories\MenusRepository;
use Illuminate\Http\Request;
use Illuminate\Support\Arr;
class BlogController extends Controller
{
    protected $category_rep;
    public function __construct(MenusRepository $menu_rep, CategoriesRepository $category_rep)
    {
        parent::__construct($menu_rep);
        $this->category_rep = $category_rep;
    }
    public function index()
    {
        $categories = $this->category_rep->get(); // метод get у меня переназначен в файле Repository.php, он будет нижеCategoriesRepository.php
<?php
namespace App\Repositories;
use App\Category;
class CategoriesRepository extends Repository {
    public function __construct(Category $category) {
        $this->model = $category;
    }
}Repository.php
<?php
namespace App\Repositories;
use Illuminate\Support\Str;
abstract class Repository
{
    protected $model = FALSE;
    public function get(){
        $builder = $this->model->select('*');
        return $builder->get();
        // в этом методе ещё много разных проверок, но чтобы не нагружать лишней инфой я их убрал
    }Возможно написал много лишней информации, если так не принято прошу прощения:)
Изменено CodingBear (10.09.2020 22:18:11)
Жизнь хороша, когда начинаешь её замечать!
Не в сети
вам нужен метод withCount(), посмотрите документацию к нему
https://laravel.com/docs/8.x/eloquent-r … ted-models
Не в сети
Да, это то что надо. Спасибо!
Жизнь хороша, когда начинаешь её замечать!
Не в сети
Страницы 1