从有条件的数据库中获取数据并在视图中显示
Get data from database with condition and show it in a view
This is the data that I have in database
This is what I want to make in the view.blade.php
我想做的是从数据库中获取数据,如果列中的数据是1,我想获取列名,如图2所示,但可能还有更多多于 1 列名称,因为包含数据的列可以是 A、B、C 列...等。如果其中包含数据,我想显示学生姓名和主题(a、b、c...等)在视图中为“1”。我坚持如何获得所有这些主题 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}
假设数据库中的 table 是 student_details
,在 app/models/StudentDetail.php
中创建一个 eloquent 模型 StudentDetail
:
<?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
你也可以使用附加的属性,我没有使用它,因为每次实例化模型时都会添加附加的属性。我相信将它放在函数中可以在需要时灵活使用。
好吧,我尝试了一些不同的方式,它不合适,但它会给你想要的输出:-
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');
This is the data that I have in database
This is what I want to make in the view.blade.php
我想做的是从数据库中获取数据,如果列中的数据是1,我想获取列名,如图2所示,但可能还有更多多于 1 列名称,因为包含数据的列可以是 A、B、C 列...等。如果其中包含数据,我想显示学生姓名和主题(a、b、c...等)在视图中为“1”。我坚持如何获得所有这些主题 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}
假设数据库中的 table 是 student_details
,在 app/models/StudentDetail.php
中创建一个 eloquent 模型 StudentDetail
:
<?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
你也可以使用附加的属性,我没有使用它,因为每次实例化模型时都会添加附加的属性。我相信将它放在函数中可以在需要时灵活使用。
好吧,我尝试了一些不同的方式,它不合适,但它会给你想要的输出:-
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');