如何在 Laravel 中定义 Eloquent 关系

Posted

技术标签:

【中文标题】如何在 Laravel 中定义 Eloquent 关系【英文标题】:How to define Eloquent relationship in Laravel 【发布时间】:2018-01-21 16:36:07 【问题描述】:

我有两个模型 - User 模型和 Movie 模型用于以下表格

user 表包含以下列

身份证 年龄

电影表有以下列

身份证 min_age

如何在 User 模型上定义关系,以便对于每个用户,我能够获得所有符合约束的电影:

Movie.min_age

我知道我可以查询电影模型并获取所有 min_age 小于或等于用户年龄的电影。我的问题是,如何通过使用 hasMany() 等函数在 User 模型中定义 Eloquent 关系 来实现这一点属于ToMany()

【问题讨论】:

您是否定义了用户和电影之间的belongsToMany 关系? @RossWilson 不,我没有。 使用query scopes。 【参考方案1】:

因此用户可以观看许多电影。同时,许多用户可以同时观看一部电影。

在 User.php

public function movies()

   return $this->hasMany(Movie::class);
 

电影.php

public function users()
  return $this->belongsToMany(User::class);

要通过关系得到你正在寻找的东西,你可以这样做;

假设您也设置了身份验证系统。

$user = Auth::user();

$getMovies = $user->movies()->where('min_age','<=',$user->age)->get();

【讨论】:

谢谢。我的印象是关系只通过主键和外键起作用,似乎我错了。

以上是关于如何在 Laravel 中定义 Eloquent 关系的主要内容,如果未能解决你的问题,请参考以下文章

Laravel - 使用 Eloquent 查询构建器在选择中添加自定义列

Laravel - 在 Eloquent 模型中返回自定义额外数据

在 laravel 中定义 eloquent 关系时添加额外的约束

如何在 Laravel/Eloquent 中获得完整的关系

如何将此查询从SQL(mysql)转换为Eloquent(Laravel)

如何使用 eloquent 在 laravel 中编写多个连接