Laravel 5 CMS делает?

Я пытаюсь создать простую CMS с Laravel 5, и я остановился на этом:

Категория форумов дублирующих

Названия категорий в порядке, но внутри одинаковые (дублирующие форумы)? Почему это? Мой код:

@extends('layouts.main')
@section('content')
@foreach($categories as $category)
<div class="panel panel-default">
<div class="panel-heading">{{ $category->title }}</div>
<div class="panel-body">
<table class="table">
<tbody>
@foreach($forums as $forum)
<tr>
<th scope="row">{{ $forum->id }}</th>
<td><a href="{{ generateForumURL($forum->seo_name, $forum->id) }}">{{ $forum->name }}</a></td>
<td>{{ $forum->topics }}</td>
<td>{{ $forum->posts }}</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
@endforeach
@stop

В маршрутах:

Route::get('', function()
{
$forums = DB::table('forums')
->select()
->get();

$categories = DB::table('categories')
->select()
->get();

return View::make('home', compact('forums', 'categories'));
});

В PhpMyAdmin:

категории:
таблица категорий

форумы:
таблица форумов

Я знаю, что я ничего не делал, но я не знаю что, я новичок в Laravel. П.С. Я не очень хорошо говорю по-английски, извините за плохой язык 🙂 Большое спасибо заранее;)

Коротко: Я не хочу показывать форум в той категории, которая написана в in_category строка. Благодарю.

2

Решение

ОК, здесь идет сложный ответ.

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

Во-первых, создайте новую модель следующим образом app/Category.php:

<?php
namespace App;

use Illuminate\Database\Eloquent\Model;

class Category extends Model {

protected $table = "categories";

public $timestamps = false;

public function forums() {
return $this->hasMany('App\Forum', 'in_category');
}

}

Затем создайте другую модель следующим образом app/Forum.php:

<?php
namespace App;

use Illuminate\Database\Eloquent\Model;

class Forum extends Model {

protected $table = "forums";

public $timestamps = false;

public function category() {
return $this->belongsTo('App\Category');
}

}

После этого вы можете изменить маршрут следующим образом:

<?php
use App\Category;

Route::get('', function()
{
$categories = Category::all();

return View::make('home', compact('categories'));
});

и ваше мнение следующее:

@extends('layouts.main')
@section('content')
@foreach($categories as $category)
<div class="panel panel-default">
<div class="panel-heading">{{ $category->title }}</div>
<div class="panel-body">
<table class="table">
<tbody>
@foreach($category->forums as $forum)
<tr>
<th scope="row">{{ $forum->id }}</th>
<td><a href="{{ generateForumURL($forum->seo_name, $forum->id) }}">{{ $forum->name }}</a></td>
<td>{{ $forum->topics }}</td>
<td>{{ $forum->posts }}</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
@endforeach
@stop

Это должно решить вашу проблему, показывая только форумы для категории в категории.

3

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

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru