首页  >  文章  >  数据库  >  如何使用 Eloquent 模型在 Laravel 中连接三个表?

如何使用 Eloquent 模型在 Laravel 中连接三个表?

Linda Hamilton
Linda Hamilton原创
2024-11-13 03:44:01804浏览

How to Join Three Tables in Laravel Using Eloquent Models?

使用 Laravel Eloquent 模型连接三个表

在 Laravel 中,使用 Eloquent ORM 可以方便地检索关系数据。考虑以下场景:

数据库表:

  • 文章:

    • id
    • 标题
    • 正文
    • categories_id
    • user_id
  • 类别:

    • id
    • category_name
  • 用户:

    • id
    • user_name
    • user_type

目标:

显示文章及其类别使用名称代替类别 ID,使用用户名代替用户 ID。

使用传统 SQL 查询:

这可以使用如下传统 SQL 查询来实现:

$articles = DB::table('articles')
                ->join('categories', 'articles.categories_id', '=', 'categories.id')
                ->join('users', 'users.id', '=', 'articles.user_id')
                ->select('articles.id', 'articles.title', 'articles.body', 'users.user_name', 'categories.category_name')
                ->get();

使用 Eloquent 模型:

但是,在 Laravel 中,使用 Eloquent 模型可以实现更简化的方法。首先,定义模型:

Article.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');
    }
}

Category.php:

namespace App\Models;

use Eloquent;

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

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

User.php:

namespace App\Models;

use Eloquent;

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

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

定义这些模型后,检索所需数据变得简单:

$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\User::with('articles')->get();

更多详细信息,请参阅 Laravel 官方文档:http://laravel.com/ docs/5.0/eloquent

以上是如何使用 Eloquent 模型在 Laravel 中连接三个表?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn