我有一个像这样的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代码中显示所有帖子和所有帖子吗?
提前致谢
答案 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
进行整合并访问每个帖子。