首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从laravel查询wordpress数据库

从laravel查询wordpress数据库
EN

Stack Overflow用户
提问于 2017-02-12 18:23:22
回答 2查看 2.1K关注 0票数 3

我在Laravel上安装了我的主要应用程序,并为blog (原油)操作设置了WordPress。将WordPress安装在public文件夹中,并在config/database.php中为第二个数据库配置数据库设置。

我遇到的麻烦是如何在第2 db (WordPress)中查询。我想在我的Laravel应用程序的登陆页面上展示最新的3篇博客文章和他们的特色图片。

造成主要混乱的原因是一篇文章在db (WordPress)中有两行,属性为post_status,值为published,第一行为published,第二行为inherit。如果功能图片设置为博客文章,则设置3行。如果有人能解决这个问题,我会很有帮助的。

EN

回答 2

Stack Overflow用户

发布于 2017-02-12 19:12:53

更新v3

第一件事:您看到inherit是因为该帖子已经修改或添加了附件。所以你应该选择那些具有publish状态的帖子。

获取3篇最新帖子的MySQL查询是:

代码语言:javascript
运行
复制
SELECT
    posts.ID AS post_id,
    posts.post_title,
    posts.post_date
FROM
    whrg_posts AS posts
WHERE
    posts.post_status = 'publish'
AND posts.post_type = 'post'
ORDER BY
    posts.post_date DESC
LIMIT 3;

假设您已经为Postmeta和Postmeta建立了一个模型,如本教程中提到的那样。我们必须首先得到所有的帖子,然后我们必须得到附件src链接到该帖子。

在BlogPost模型中添加此函数

代码语言:javascript
运行
复制
Public function getPostById($post_id)
{
    return BlogPost::where('ID', $post_id)
            ->first();
}

替换getPosts()模型中的BlogPost方法

代码语言:javascript
运行
复制
Public function getPosts()
{
    return BlogPost::with('postmetas')
            ->status()
            ->type()
            ->orderBy('post_date', 'DESC')
            ->limit(3)
            ->get();
}

在您的控制器中,您可以访问它就像

代码语言:javascript
运行
复制
public function anyPostList()
{
    $postImages = []; //array to hold the featured image URL in a key value pair
    $BlogPost = new BlogPost();
    $posts = $BlogPost->getPosts();
    foreach ($posts as $post)
    {
        if (!empty($post->postmetas))
        {
            foreach ($post->postmetas as $postmeta)
            {
                //if _thumbnail_id exists then get its guid for src
                if ($postmeta->meta_key == '_thumbnail_id' && !empty($postmeta->meta_value)){
                    $thumbnail_id = $postmeta->meta_value;
                    $attachment = $BlogPost->getPostById($thumbnail_id);
                    if(!empty($attachment->guid))
                        $postImages[$post->ID] = $attachment->guid;
                }

            }
        }
    }
    $data = [
        'posts' => $posts,
        'postImages' => $postImages
    ];
    return view('test.post', $data);
}

要在刀片中显示帖子: project_name/resources/views/test/post.blade.php

代码语言:javascript
运行
复制
@foreach($posts as $post)
    <h1>{{ $post->post_title }}</h1>
    <span>Published on : {{ $post->post_date }}</span>
    @if(isset($postImages[$post->ID]))
        <img src="{{$postImages[$post->ID]}}" width="200"/>
    @endif
    <div>
        {{ $post->post_content }}
    </div>
@endforeach
票数 1
EN

Stack Overflow用户

发布于 2017-02-13 02:08:26

从Laravel 文档

使用多个数据库连接 使用多个连接时,可以通过DB facade上的连接方法访问每个连接。传递给connection方法的名称应该对应于config/database.php配置文件中列出的连接之一: $users = DB::connection('foo')->select(...);

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42191442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档