首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel :查询两个“工件”表,“two”冲突

Laravel :查询两个“工件”表,“two”冲突
EN

Stack Overflow用户
提问于 2017-09-03 08:08:21
回答 1查看 274关注 0票数 0

例如,

有两个表,articles-1articles-2

它们具有相同的结构,每个表的id来自1

我想查询这两个表的文章,并在一个视图上显示它们。

ArticlesController.php

代码语言:javascript
复制
public function index()
{
    $articles1=Article1::all();
    $articles2=Article2::all();
    //$allArticles=;  //How to merge $articles1 and $articles2?
    return view('index', compact('allArticles'));
}

index.blade.php

代码语言:javascript
复制
<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

代码语言:javascript
复制
public function show($slug)
{
    //query twice?
    $newArticle = NewArticle::findOrFail($slug);
    $oldArticle = OldArticle::findOrFail($slug);

    //How to write next?

    return view('show', compact('article'));
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-03 08:35:30

首先,您不应该拥有像Article1和Article2这样的模型。对模型和表名使用特定于上下文的名称。现在,如果我们有两种模型,比方说,老字报和新文章,表,旧式文章和网状结构

代码语言:javascript
复制
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列,并创建如下链接

代码语言:javascript
复制
<ul>
   @foreach ($allArticles as $article)
       <li><a href="articles/{{$article['article_slug']}}">{{ $article['title'] }}</a></li>
       <li>{{ $article['updated_at']}}</li>
   @endforeach
</ul>

要从任一表中显示一篇文章,请用ArticleController编写以下方法

代码语言:javascript
复制
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'));
        }
    }


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

https://stackoverflow.com/questions/46021464

复制
相关文章

相似问题

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