1

私は3つのクラスの学生、セッション、および学生クラスを持っており、関係があります(学生と登録、セッションと登録、および学生クラスと登録)。エコーすると、結果が表示されます [{"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())}}

動作していることに注意してください


セッションからも同じですが、学生クラスから抽出してclass_nameが必要な場合、エラーは表示されませんが、学生クラスから抽出された値はblade.phpの同じタイプのクエリではありません

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

ここに、StudentClass Controller の 1 対多の関係があります

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

入学クラス

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

この関係を使用して、テーブルから class_name 値を選択する方法。ありがとう

4

3 に答える 3

1

implodeまず、 illuminate/collection メソッドでメソッドを使用できることに注意してください。

{{ $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

.以下に示すように、簡単な表記法を使用して関係の列を抽出できます。

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

ここでは、 のように形成されrelationshipます。column

于 2020-07-05T20:47:10.033 に答える
0

登録モデルの 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 に答える