使用 Laravel Eloquent 模型连接三个表
在 Laravel 中,使用 Eloquent 模型简化了关系数据的检索。本文演示如何使用 Eloquent 连接三个表,以从文章、类别和用户表中检索数据。
考虑以下数据库架构:
Articles Table | Categories Table | User Table |
---|---|---|
id | id | id |
title | category_name | user_name |
body | user_type | |
categories_id | ||
user_id |
目标是检索文章及其相应的类别名称,而不是category_id和用户名而不是 user_id。
根据数据库定义模型之间的关系schema:
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'); } }
类别ory.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'); } }
检索具有相关数据的文章:
$articles = \App\Models\Article::with(['user','category'])->get();
按如下方式访问相关数据:
// Retrieve user name $article->user->user_name // Retrieve category name $article->category->category_name
检索某个类别内或按特定类别的文章user:
$categories = \App\Models\Category::with('articles')->get(); $users = \App\Models\Category::with('users')->get();
Laravel 的 Eloquent 模型极大地简化了检索关系数据的任务。通过了解模型之间的关系并在代码中设置它们,您可以轻松访问必要的数据并有效地执行更复杂的查询。
以上是如何使用 Eloquent 关系在 Laravel 中连接三个表?的详细内容。更多信息请关注PHP中文网其他相关文章!