1

我有三个班级学生,会议和学生班级,它有关系(学生与入学,会话与入学和学生班级与入学),当我回显它显示结果[{“id”:1,“school_id”:1 ,"class_id":1,"student_id":1,"session_id":1,"created_at":null,"updated_at":null}] ,我从学生班中提取了价值

{{implode(',',$en->school()->get()->pluck('school_name')->toArray())}}

请注意它正在工作


与 Session 相同,它也可以工作,但是当我从学生类中提取并需要 class_name 时,它​​不会显示错误,但从 studentclass 中提取的值不显示,这里是刀片.php 中的相同类型的查询

{{implode(',',$en->studentclass()->get()->pluck('class_name')->toArray())}}

这是StudentClass Controller中的一对多关系

public function enrollments()
    {
        return $this->hasMany(Enrollement::class);
    }

招生班

public function studentclass()
    {
        return $this->belongsTo(StudentClass::class);
    }

如何使用这种关系从表中选择 class_name 值。谢谢

4

3 回答 3

1

首先,请注意,您可以implode在照明/收集方法上使用该方法:

{{ $en->school()->get()->pluck('school_name')->implode(', ') }}

可以进一步缩短为

{{ $en->school->pluck('school_name')->implode(', ') }}

学生班可以这样拔

{{ $en->studentclass->pluck('enrollments.class_name')->implode(', ') }}

使用点语法访问类名。

为了防止这造成 n+1 问题并减少运行的查询数量,您应该延迟加载关系:

{{ $en->load('studentclass.enrollments')->studentclass->pluck('enrollments.class_name')->implode(', ') }}

你也可以提前加载它:

$en = Enrollment::with('studentclass.enrollments')->where('id', $id)->first();
于 2020-07-05T21:00:58.103 回答
0

我已经更改了 Enrollment Model 中的 studentclass 函数

public function studentclass()
    {
        return $this->belongsTo(StudentClass::class,'id');
    }

只需添加“id”并从视图中提取

{{implode(',',$en->studentclass()->get()->pluck('class_name')->toArray())}}
于 2020-07-05T22:12:29.573 回答
0

.您可以使用下面给出的简单符号来提取关系的列。

{{ implode(',', $en->studentclass()->pluck('studentclass.class_name')->toArray()) }}

在这里,它形成为,relationshipcolumn

于 2020-07-05T20:47:10.033 回答