2015-08-04 4 views
2

Я пытаюсь построить простой CMS с Laravel 5 и я остановился на этом:Laravel 5 Создание CMS?

Category forums duplicating

Категория названия в порядке, но в то же самое (Множительные форумах)? Почему это? Мой код:

@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:

категории: categories table

форумы: forums table

Я знаю, что я не сделал делать что-то, но я не знаю, что, новичок в Laravel. P.S Я не очень хорош в английском, извините за мой плохой язык :) Благодарит так много заранее;)

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

+0

Я не понимаю, о чем вы просите. – Jamesking56

+0

@ Jamesking56, как вы видите сейчас в двух категориях, печатает одни и те же форумы, но я не буду печатать в одной категории один форум, в другой категории другие форумы .. У меня есть таблицы в PhpMyAdmin: 'in_category', и каждая категория имеет уникальный идентификатор , Так что я не хочу печатать x форум в категории x через id –

+0

Я сомневаюсь, понимаете ли вы меня: D –

ответ

3

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

В 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 

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

+0

«Класс» Категория «не найден», может быть, я должен что-то написать в композиторе? –

+0

Вы помещали два класса моделей в каталог 'app /'? – Jamesking56

+0

Я создал файл, созданный .txt-файл, написанный текст, затем сохраненный как .php-файл –

Смежные вопросы