如何在 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 关系时添加额外的约束