2013-01-12 9 views
1

Это мои данные в таблицах.Laravel - Как присоединиться к таблице с сообщений в категории

  • категории [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 


} 

Я хочу перечислить сообщения от почтовой модели -> list_posts(), потому что я хочу, чтобы он ne в модели Не контроллер, но я не могу присоединяюсь категории таблица, чтобы получить category_name.

Как присоединиться к таблице категорий, чтобы получить category_name?

ответ

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); 
    } 
} 

//application/models/Post.php

class Post extends Eloquent { 

    //public static $table = 'posts'; 

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

//application/models/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> 
+0

Выполняется ли '$ post-> category-> name', если поле таблицы называется 'category_name', а не' name', или это была опечатка? – dualed

+0

попытались ошибка купить ... Неизвестного исключение Сообщения: Попытки получить свойство не-объект Расположение: C: \ тест-Laravel \ Laravel \ view.php (386): Eval() 'd код в строке 37 – vee