Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 使用条件从数据库中获取数据并在视图中显示_Laravel_Laravel 5_Laravel 5.2_Laravel 5.1 - Fatal编程技术网

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

Laravel 使用条件从数据库中获取数据并在视图中显示,laravel,laravel-5,laravel-5.2,laravel-5.1,Laravel,Laravel 5,Laravel 5.2,Laravel 5.1,我想做的是从数据库中获取数据,如果列中的数据是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

我想做的是从数据库中获取数据,如果列中的数据是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}

假设数据库中的表是
student\u details
,则在
app/models/StudentDetail.php中创建一个雄辩的模型
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);
    }

}
在内部视图中,您可以执行以下操作:

@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');

如果列的值是1,您可以简单地显示列名,如
@if($row->A==1)A@endif
,或者您可以使用三元运算符,如
{{$row->A==1?'A':'}
为每个列手动检查此条件,如
{$row->B==1?'B':'}
{{$row->C==1?'C':'}
依此类推。@Xitish对于{{$row->A==1?'A,':''}}我应该在空的:'}}中放入一些东西吗?它就像一个符咒:),谢谢@XintishYou不应该看到这样的逻辑,您应该直接从控制器获取结构化数据,这样您就可以直接使用它。这将使刀片文件更干净。你先接受了,我在空中,然后你不接受了…我恢复正常:我希望我能接受不止一个答案,但我不能:(,我真的很感谢你帮助我的努力,兄弟:)你可以投票,如果它有效的话,是的,随时兄弟,这就是dev的DOdone:)投票表决你的建议,但我的代表<15,这样它就不会出现了Hh别担心,没关系,你很快就会起床:)编码愉快你的建议很棒,感谢你在本周第二次帮助我:),我真的很感激:)很高兴帮助:)我如何将生成的数据保存到数据库?我已尝试添加此代码DB::table('finalyear_students')->updateOrInsert(['student_name'=>$finalyear_students->student_name],'subject'=>$finalyear_students->getSubjects());但它不起作用。你是不是在雄辩的模型中将主题域作为一个数组?因为我认为每个主题都有不同的列,对吗?是的,每个主题都有不同的列,但是模型返回一个数组,对吗?或者我仍然可以根据列保存主题?我是新来拉维尔的。。我知道的不多,也不知道如何实际保存数据。如果我可以将每个主题保存在不同的列中,而不是将主题集合保存在单个列中,那就太好了
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');