我在Laravel中设置了我的主应用程序,并为博客(CRUDE)操作设置了WordPress。在public
文件夹中安装了WordPress,并为Laravel中的config/database.php
中的第二个数据库配置了数据库设置。
我遇到的麻烦是如何在第二个数据库(WordPress)中查询。我想在我的Laravel应用程序的登录页面中显示最新的3篇博文及其特色图片。
主要的混淆是由于一个帖子在db(WordPress)中有两行,属性为post_status
,第一行为published
,第二行为inherit
。如果特色图像设置为博客文章3行。如果有人能够解决这个问题,我会非常乐于助人。
答案 0 :(得分:1)
更新v3
首先要做的是:您看到
inherit
是因为该帖子有 已修订或附加添加。所以你应该选择那些帖子 帖子有publish
状态。
获取3个最新帖子的MySQL查询是:
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;
<小时/> 假设你已经设置了Post和Postmeta模型,就像在this tutorial中提到的那样。我们必须首先获得所有帖子,然后我们必须获得该帖子的附件
src
链接。
在BlogPost模型中添加此功能
Public function getPostById($post_id)
{
return BlogPost::where('ID', $post_id)
->first();
}
替换BlogPost模型中的getPosts()
方法
Public function getPosts()
{
return BlogPost::with('postmetas')
->status()
->type()
->orderBy('post_date', 'DESC')
->limit(3)
->get();
}
在您的控制器中,您可以像
一样访问它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
@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 :(得分:1)
来自Laravel docs。
使用多个数据库连接
使用多个连接时,您可以通过访问每个连接 数据库外观上的连接方法。这个名字传给了 连接方法应对应列出的其中一个连接 在config / database.php配置文件中:
$users = DB::connection('foo')->select(...);