Laravel - 如何将表从帖子连接到类别

时间:2013-01-12 16:05:47

标签: php laravel eloquent

这是我的表数据。

  • 类别 [id] [category_name]

  • 帖子 [id] [category_id] [post_name]

我想做的是:

我想列出echo category_name的帖子和联接类别表。


这是我的控制器

class Form_data_Controller extends Base_Controller {


    function action_index() {

        $posts = new Post();
        $list_posts = $posts->list_posts();
        $view['list_posts'] = $list_posts;

        echo '<pre>';
        print_r( $list_posts );
        echo '</pre>';

        $view['pagination'] = $list_posts->links();

        // page title
        $view['page_title'] = 'Test list data';

        // create view and end.
        return View::make( 'form-data.index_v', $view );

    }// action_index


}

这是帖子模型

class Post extends Eloquent {


    //public static $table = 'posts';


    public function categories() {
        return $this->belongs_to( 'Category' );
    }// categories


    function list_posts() {
        $query = $this
                ->order_by( 'post_name', 'asc' )
                ->paginate( '10' );

        return $query;
    }// list_posts


}

这是类别模型

class Category extends Eloquent {


    //public static $table = 'categories';


    public function posts() {
        return $this->has_many( 'Post' );
    }// categories


}

我想列出帖子模型中的帖子 - &gt; list_posts()方法,因为我希望它在模型Not控制器中完成,但我不能加入类别表来获取 category_name

如何加入类别表以获取 category_name

1 个答案:

答案 0 :(得分:0)

多个控制器方法可能需要以不同方式“列出帖子”,因此我不会将该逻辑放在模型中。这就是我认为你应该完成你的问题。否则,您可以将其设为静态方法并将其称为$ posts = Post :: list_posts();

class Form_data_Controller extends Base_Controller {

    function action_index() {

        $posts = Post::order_by( 'post_name', 'asc' )->paginate( '10' );

        return View::make( 'form-data.index_v')
                  ->with('title', 'Test list data')
                  ->with('posts', $posts);
    }
}

//应用/模型/ post.php中

class Post extends Eloquent {

    //public static $table = 'posts';

    public function category() {
        return $this->belongs_to( 'Category', 'category_id' );
    }
}

//应用/模型/ Category.php

class Category extends Eloquent {

    //public static $table = 'categories';

    public function posts() {
        return $this->has_many( 'Post' );
    }// categories
}

//应用/视图/格式数据/ index_v.blade.php

<html>
<head>
<title>{{ title }}</title>
</head>
<body>
 {{ $posts->links() }}
@foreach($posts as $post)
 {{ $post->category->name }}
@endforeach
</body>
</html>