Laravel 5 CMS制作?

时间:2015-08-04 14:24:11

标签: php laravel content-management-system 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我英语不好,抱歉我的语言不好:)非常感谢你提前;)

很快:我不想在in_category行中写出该类别的论坛。感谢。

1 个答案:

答案 0 :(得分: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

这应该只显示该类别中的类别的论坛来解决您的问题。