如何使用Php获取没有Id的文章和评论

时间:2017-05-23 01:56:09

标签: php

我有一个像这样的PHP代码,使用php MVC发布评论,但我必须使用url获取网址ID,并选择发布和评论网址:

url id:http://localhost/blogs/my-article-title/12

我的控制器中的代码如下:

public function index($title, $id)`
    {
        $post = $this->load->model('Posts')->getPostWithComments($id);
}

在我的模特中这样:

public function getPostWithComments($id)
    {
        $post = $this->select('p.*', 'c.name AS `category`', 'u.first_name', 'u.last_name', 'u.image AS userImage')
                     ->from('posts p')
                     ->join('LEFT JOIN categories c ON p.category_id=c.id')
                     ->join('LEFT JOIN users u ON p.user_id=u.id')
                     ->where('p.id=? AND p.status=?', $id, 'enabled')
                     ->fetch();

        if (! $post) return 

        $post->comments = $this->select('c.*', 'u.first_name', 'u.last_name', 'u.image AS userImage')
                               ->from('comments c')
                               ->join('LEFT JOIN users u ON c.user_id=u.id')
                               ->where('c.post_id=?', $id)
                               ->fetchAll();

        return $post;
    }

当我想在文章页面上看到帖子和评论时使用上面的代码,但我很困惑,如何获得评论的帖子而不必使用现有网址的ID,我的意思是当我想要打开网站的主页,帖子和评论直接在节目中。

我试图在我的控制器上执行此操作:

public function index()
    {
        $post = $this->load->model('Posts')->getPostWithComments();
    }

这在我的模型中,但我只收到所有帖子,而不是所有评论,我在那里有错误:

我的模特:

public function getPostWithComments()
    {
        $post = $this->select('p.*', 'c.name AS `category`', 'u.first_name', 'u.last_name', 'u.image AS userImage')
                     ->from('posts p')
                     ->join('LEFT JOIN categories c ON p.category_id=c.id')
                     ->join('LEFT JOIN users u ON p.user_id=u.id')
                     ->fetchAll();

        if (! $post) return null;

        $post->comments = $this->select('c.*', 'u.first_name', 'u.last_name', 'u.image AS userImage')
                                ->from('comments c')
                                ->join('LEFT JOIN users u ON c.user_id=u.id')
                                ->fetchAll();
        return $post;
    }

有人可以帮我在不使用网址ID的情况下在我的php代码中显示所有帖子和所有帖子吗?

提前致谢

1 个答案:

答案 0 :(得分:0)

您想要的是首先从数据库中获取所有帖子的URL ID,然后在每个url ID上调用getPostWithComments($id)。 例如:

$urls = array(**an array containing urls gotten from DB**);
$posts = array(); //initialize an empty array so we can store the posts here
foreach($urls as $url) {
    $posts[] = load->model('Posts')->getPostWithComments($url);
}

现在您可以通过$posts进行整合并访问每个帖子。