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

Posted

技术标签:

【中文标题】Laravel - 如何将表格从帖子连接到类别【英文标题】:Laravel - How to join table from posts to categories 【发布时间】:2012-12-27 00:53:27 【问题描述】:

这是我的表格数据。

类别 [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() 方法,因为我希望它在模型而不是控制器中完成,但我无法加入类别表以获取 category_name .

如何加入分类表得到category_name

【问题讨论】:

【参考方案1】:

多个控制器方法可能需要以不同的方式“列出帖子”,所以我不会把这个逻辑放在模型中。这就是我认为你应该完成你的问题的方式。否则,您可以将其设为静态方法并将其称为 $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

//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>

【讨论】:

如果表字段被称为 category_name 而不是 name$post-&gt;category-&gt;name 是否有效,或者是拼写错误? 尝试购买错误... 未处理的异常消息:尝试获取非对象位置的属性:C:\test-laravel\laravel\view.php(386) : eval()'d code在第 37 行

以上是关于Laravel - 如何将表格从帖子连接到类别的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Laravel 8 连接到 oracle 11g 数据库?

(Discord.js) 如何让所有成员连接到某个类别的语音频道?

插入数据时如何将项目连接到一对多关系中的类别

WordPress:我如何通过 sql 将所有帖子从体育类别转换为新闻类别 [关闭]

如何将带有前缀列的表连接到 PHP MySQL 或 Laravel 中的另外两个表

Laravel 类别、子类别和帖子