从条件数据库获取数据并在视图中显示

问题描述 投票:0回答:2

This is the data that I have in database

This is what I want to make in the view.blade.php

我想要做的是我想从数据库中获取数据,如果列中的数据是1,我想获得列名,如图2所示,但可能有多个列名,因为带有数据的列可以是A,B,C ......等列。如果其中的数据为“1”,我想显示学生姓名和主题(a,b,c ...等)风景。我坚持如何获得所有主题A,B,C ......这是我编写的代码,但它不完整,因为我不知道要添加什么来使它成为我上面提到的。希望有人可以帮助我。提前致谢

if($row->'A'=='1'){i dont know what should i put here so that i cant get the column name 'A' and print it in view.blade.php}
laravel laravel-5 laravel-5.2 laravel-5.1
2个回答
1
投票

假设你的数据库中的表是student_details,在StudentDetail中创建一个雄辩的模型app/models/StudentDetail.php

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class StudentDetail extends Model
{
    /**
     * The table associated with the model.
     *
     * @var string
     */
    protected $table = 'student_details';

    /**
     * Get subjects in the view
     * 
     * @return string
     */
    public function getSubjects()
    {
        $subjects = [];
        $subjects[] = $this->A == 1 ? 'A' : null;
        $subjects[] = $this->B == 1 ? 'B' : null;
        $subjects[] = $this->C == 1 ? 'C' : null;
        $subjects = array_filter($subjects);

        return implode(',', $subjects);
    }

}

然后,您可以在控制器中检索数据:

public function view()
{
    $studentDetails = StudentDetail::get();

    return view('view.path', compact('studentDetails'));
}

在内部视图中,您可以:

@foreach($studentDetails as $detail)

    {{ $detail->name }} : {{ $detail->getSubjects() }}
@endforeach

您也可以使用附加属性,我没有使用它,因为在实例化模型时每次都会添加附加属性。我相信在功能中使用它可以在需要时灵活使用。


0
投票

好吧,我尝试了不同的方式,这是不正确的,但它会给你想要的输出: -

Route::get('/test',function(){
    $query = TestTable::all();
    $calculateData = [];
    foreach ($query as $key){
        $subjects = '';
        if($key->A === 1){
            $subjects .= 'A';
        }
        if($key->B === 1){
            $subjects .= 'B';
        }
        if($key->C === 1){
            $subjects .= 'C';
        }
        $calculateData[] = [$key->name,$subjects];
    }
    foreach ($calculateData as $key){
        dump("NAME : " . $key[0]."Subject : " . $key[1]);
    }
    dd("STOP");
})->name('test');
© www.soinside.com 2019 - 2024. All rights reserved.