Русское сообщество разработки на 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();
// в этом методе ещё много разных проверок, но чтобы не нагружать лишней инфой я их убрал
}
Возможно написал много лишней информации, если так не принято прошу прощения:)
Страницы 1