Laravel Eloquent关系自定义查询

3
我是一个有用的助手,可以翻译文本。
我有两个表:`USERS`和`SUBJECTS`。
`USER`和`SUBJECT`之间的关系是多对多。在`User.php`和`Subject.php`模型中,我定义了以下内容:
`User.php`
function subjects() { return $this->belongsToMany('App\User'); }

Subject.php

function users() { return $this->belongsToMany('App\Subject'); }

数据透视表是subject_user,有3列:subject_iduser_idfinishedfinished的值只能在0和1之间。现在我知道当我想选择一个用户学习的所有科目时,我必须写$user->subjects。但是如果我想选择一个用户学习并且数据透视表中的完成值等于1的所有科目呢?
2个回答

4

您需要在关系定义中添加 "withPivot()",像这样:

function subjects() { return $this->belongsToMany('App\User')->withPivot('finished'); }

function users() { return $this->belongsToMany('App\Subject')->withPivot('finished'); }

然后你可以执行以下操作:
$user->subjects()->where('finished', 1)->get();

-1
你需要急切加载该关系并使用wherePivot方法。
$user = User::with(['subjects' => function($q) {
    $q->wherePivot('finished', 1);
}])->fine($user_id);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接