例如,
有两个表,articles-1和articles-2,
它们具有相同的结构,每个表的id来自1。
我想查询这两个表的文章,并在一个视图上显示它们。
ArticlesController.php
public function index()
{
$articles1=Article1::all();
$articles2=Article2::all();
//$allArticles=; //How to merge $articles1 and $articles2?
return view('index', compact('allArticles'));
}index.blade.php
<ul>
@foreach ($allArticles as $article)
<li><a href="articles/{{$article->id}}">{{ $article->title }}</a></li>
<li>{{ $article->updated_at}}</li>
@endforeach
</ul>问题:
ArticlesController中的1、,如何将$articles1和$articles2合并?
考虑到每个项目都有到show页面(详细信息页)的链接,但是它们可能有相同的id,我该怎么办?
更新:
如何编写show方法的查询?
ArticlesController.php
public function show($slug)
{
//query twice?
$newArticle = NewArticle::findOrFail($slug);
$oldArticle = OldArticle::findOrFail($slug);
//How to write next?
return view('show', compact('article'));
}发布于 2017-09-03 08:35:30
首先,您不应该拥有像Article1和Article2这样的模型。对模型和表名使用特定于上下文的名称。现在,如果我们有两种模型,比方说,老字报和新文章,表,旧式文章和网状结构
public function index()
{
$oldArticlesArr = Oldarticle::all()->toArray();
$newArticlesArr = Newarticle::all()->toArray();
$allArticles = array_merge($oldArticlesArr, $newArticlesArr);
return view('index', compact('allArticles'));
}在newarticles和oldarticles表中使用article_slug列,并创建如下链接
<ul>
@foreach ($allArticles as $article)
<li><a href="articles/{{$article['article_slug']}}">{{ $article['title'] }}</a></li>
<li>{{ $article['updated_at']}}</li>
@endforeach
</ul>要从任一表中显示一篇文章,请用ArticleController编写以下方法
public function show($article_slug)
{
//search in oldarticles table
$oldArticle = Oldarticle::where('article_slug',$article_slug)->first();
if ($oldArticle) {
//if found return that as article
$article = $oldArticle;
return view('show', compact('article'));
} else {
//search in newarticles table if found return that as article
$article = Newarticle::where('article_slug',$article_slug)->first();
if ($article) {
return view('show', compact('article'));
}
}
}https://stackoverflow.com/questions/46021464
复制相似问题