在laravel 5.1中显示多个类别的更好方法是什么?

时间:2015-08-06 03:29:54

标签: php laravel laravel-5 laravel-5.1

我在一个网站工作,我必须在主页上显示多个类别信息。目前我的代码在控制器中如下所示

public function category1()
{
    //here 1 is category id
    $category1 = POST::find(1);
    return view('books.index',compact('category1'));
}
public function category2()
{
    //here 2 is category id
    $category2 = POST::find(3);
    return view('books.index',compact('category2'));
}
public function category3()
{
    //here 3 is category id
    $category3 = POST::find(3);
    return view('books.index',compact('category3'));
}

并且在我看来我正在显示每个类别数据。但我认为这将使网站变慢,因为在家里我将显示大约15个类别。对于每个类别我正在创建方法。我希望它不是更好的方法。请建议我更好的方法,这样我就可以使用单一的方法。

提前谢谢

更新了问题 ::

我的路线喜欢

Route::get('/', 'HomeController@index');

和mysql表看起来像

id|post_title|post_content|cat_id

在我的主页我有15个盒子,里面有15个类别信息。现在我打电话给每个类别的每个请求。我的问题是我可以在单个请求中这样做,当我导航到我的家庭网址,如www.myurl.com

1 个答案:

答案 0 :(得分:0)

不确定是否完全理解您的问题,但是:

public function category($categoryId)
{
    $category = POST::find($categoryId);
    return view('books.index',compact('category'));
}

如果需要,请在routes.php文件中:

Route::get('/category/{id}', 'MyController@category');

更新

如果您尝试在同一页面中显示多段代码,则应执行以下操作:

public function category()
{
    $category1 = POST::find(1);
    $category2 = POST::find(2);
    $category3 = POST::find(3);
    return view('books.index',compact('category1', 'category2', 'category3'));
}

更新2:

我会做什么:

public function getCategories(){
    $categoryModel = new CategoryModel;
    $categories = $categoryModel->getAllCategories();
    return view('books.index', compact('categories');
}

模型可能是:

<?php namespace App;

use Illuminate\Database\Eloquent\Model;
use DB;

class CategoryModel extends Model {

    function getAllCategories(){

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

        return $categories;
    }
}