当前位置: 首页 > 知识库问答 >
问题:

如何用laravel口才模型连接三个表

燕刚毅
2023-03-14

我有三张桌子

 id
 title
 body
 categories_id
 user_id
  id
  category_name
 id
 user_name
 user_type

我想显示文章与他们的类别名称而不是category_id和user_name而不是user_id,我试着像这些查询,它是工作!

$articles =DB::table('articles')
                ->join('categories', 'articles.id', '=', 'categories.id')
                ->join('users', 'users.id', '=', 'articles.user_id')
                ->select('articles.id','articles.title','articles.body','users.username', 'category.name')
                ->get();

但我想用雄辩的方式来做。拜托,我该怎么办?

共有2个答案

薛淳
2023-03-14

尝试:

$articles = DB::table('articles')
            ->select('articles.id as articles_id', ..... )
            ->join('categories', 'articles.categories_id', '=', 'categories.id')
            ->join('users', 'articles.user_id', '=', 'user.id')

            ->get();
巫马庆
2023-03-14

用Elecoquent检索关系数据是非常容易的。使用Laravel5中的场景检查以下示例。

我们有三种模式:

1)文章(属于用户和类别)

2)类别(有很多文章)

3)用户(文章多)

1)article.php

<?php

namespace App\Models;
 use Eloquent;

class Article extends Eloquent{

    protected $table = 'articles';

    public function user()
    {
        return $this->belongsTo('App\Models\User');
    }

    public function category()
    {
        return $this->belongsTo('App\Models\Category');
    }

}

2)category.php

<?php

namespace App\Models;

use Eloquent;

class Category extends Eloquent
{
    protected $table = "categories";

    public function articles()
    {
        return $this->hasMany('App\Models\Article');
    }

}

3)user.php

<?php

namespace App\Models;
use Eloquent;

class User extends Eloquent
{
    protected $table = 'users';

    public function articles()
    {
        return $this->hasMany('App\Models\Article');
    }

}

您需要了解数据库关系和模型中的设置。用户有很多文章。类别有很多文章。文章属于用户和类别。一旦在Laravel中设置了关系,检索相关信息就变得很容易了。

例如,如果您希望通过使用用户和类别检索一篇文章,则需要编写以下内容:

$article = \App\Models\Article::with(['user','category'])->first();

您可以这样使用它:

//retrieve user name 
$article->user->user_name  

//retrieve category name 
$article->category->category_name

在另一种情况下,您可能需要检索一个类别中的所有文章,或者检索一个特定用户的所有文章。你可以这样写:

$categories = \App\Models\Category::with('articles')->get();

$users = \App\Models\Category::with('users')->get();

您可以在http://laravel.com/docs/5.0/eLoquent上了解更多信息

 类似资料:
  • 我正在使用Laravel Eleoquent查询生成器,并且我有一个查询where我想要一个关于多个条件的子句。很管用,但不优雅。 示例: 有没有更好的方法做到这一点,还是我应该坚持这个方法?

  • 问题内容: 我有三个表名为 现在要显示学生姓名和他所学习的课程名称, 我建立以下查询 但是它不会返回所需的结果… 如果我想找到谁是其他经理,那么归一化表格将是什么: 并希望得到以下结果: 问题答案: 只需使用:

  • 为什么叫“泛型模型”,请查看一些基本概念 Keras的泛型模型为Model,即广义的拥有输入和输出的模型,我们使用Model来初始化一个泛型模型 from keras.models import Model from keras.layers import Input, Dense a = Input(shape=(32,)) b = Dense(32)(a) model = Model(inp

  • 如果我有三个表: > 列出所有未被查看的正确方法是什么?此查询是否正确? 按< code>user_id列出所有< code >帖子及其“查看状态”如何? 您是否也可以推荐一个很棒的(用户友好的、非极客的)资源来提高我对LEFT JOIN、CROSS JOIN和(正常连接?从帖子、视图中选择*)的理解? 谢谢大家!

  • 如果刚开始学习Sequential模型,请首先移步这里阅读文档,本节内容是Sequential的API和参数介绍。 常用Sequential属性 model.layers是添加到模型上的层的list Sequential模型方法 add add(self, layer) 向模型中添加一个层 layer: Layer对象 pop pop(self) 弹出模型最后的一层,无返回值 compile