1

これは私のテーブルデータです。

  • カテゴリ[ID] [カテゴリ名]

  • 投稿[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


}

投稿モデルから投稿を一覧表示したい-> list_posts() メソッドは、コントローラーではなくモデルで実行したいためですが、カテゴリテーブルに参加してcategory_nameを取得できません。

カテゴリ テーブルに参加してcategory_nameを取得する方法は?

4

1 に答える 1

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
}

//application/views/form-data/index_v.blade.php

<html>
<head>
<title>{{ title }}</title>
</head>
<body>
 {{ $posts->links() }}
@foreach($posts as $post)
 {{ $post->category->name }}
@endforeach
</body>
</html>
于 2013-01-12T18:17:21.043 に答える