在Laravel 5.6中,Foreach在我的视图中不起作用

时间:2018-09-25 09:13:18

标签: laravel foreach view

class Base {}
class D1 extends Base{}
class D2 extends Base{}

void Foo(Base d1OrD2) {
  var d1 = d1OrD2 as D1;
  if (d1 != null) print("it's d1");
  else {
    var d2 = d1OrD2 as D2;
    if (d2 != null) print("it's d2");
  }
}


void main() async{
  Foo(D2()); // throws exception D2 is not an instance of D1.
  Foo(D1()); // works
}

这是我的控制器

public function getValues(Request $request){
            $typ=$request->get('typ');
            $stellentyp=$request->get('stellentyp');
            $bereich=$request->get('bereich');
            $abschluss=$request->get('abschluss');
            $user = DB::table('users')->get();
            $angebots = DB::table('angebots') ->orderBy('stellenname', 'asc');
            if(!empty($request->get('stellentyp'))){
                $angebots->where('stellentyp', $stellentyp);
            }
            $angebots->get();
            $row = $angebots->count();
            return view('user/angebots', compact('typ', 'stellentyp', 'bereich', 'abschluss', 'row', 'angebots', 'user'));
        }

这是我的观点

但我收到此错误消息: 未定义的属性:Illuminate \ Database \ MySqlConnection :: $ firma(查看:C:\ wamp \ sites \ j4ylara \ resources \ views \ user \ angebots.blade.php)

如果我像这样把我的第一句话放在后面

{{$row}} Angebote insgesamt
    <div class="row">
        @foreach ($angebots as $angebot)
            <div class="col-12 col-md-6 col-lg-4 pt-4">
                <div class="card offer-card">
                    <div class="card-image">
                        <img class="img-fluid" src="{{ asset('uploads/avatars/' . $user[$angebot->firma -1]->avatar) }}">
                    </div>
                    <div class="card-body">
                        <h4 class="text-j4y-dark praktikumstitel">{{ $angebot->stellenname }}</h4>
                        <a href="{{ route('angebot.details',['id'=>$angebot->firma]) }}">Jetzt mehr anzeigen »</a>
                    </div>
                </div>
            </div>
        @endforeach
    </div>

但是过滤器不起作用

我不知道如何查看结果

我只知道这种方式

$angebots = DB::table('angebots') ->orderBy('stellenname', 'asc')->get();

但是我想要我所有的结果,所以我使用了foreach,但是它不起作用

有人知道为什么吗?

2 个答案:

答案 0 :(得分:1)

在以下代码段中

$angebots = DB::table('angebots') ->orderBy('stellenname', 'asc');
if(!empty($request->get('stellentyp'))){
    $angebots->where('stellentyp', $stellentyp);
}
$angebots->get();

您正在执行$angebots->get(),它会返回您的查询结果。您需要将查询结果分配给变量,并将其传递到视图中。您可以执行以下操作:

$angebots = $angebots->get();

将查询结果分配给$angebots,然后可以在视图中使用它。

我个人考虑将$angebots重命名为$angebotsQuery或类似名称,然后执行以下操作:

$angebotsQuery = DB::table('angebots') ->orderBy('stellenname', 'asc');
if(! empty($request->get('stellentyp'))){
    $angebotsQuery->where('stellentyp', $stellentyp);
}
$angebots = $angebotsQuery->get();

答案 1 :(得分:1)

您正在$angebot中发送构建器。尝试将结果放入变量中。

public function getValues(Request $request){
    $typ=$request->get('typ');
    $stellentyp=$request->get('stellentyp');
    $bereich=$request->get('bereich');
    $abschluss=$request->get('abschluss');

    $user = DB::table('users')->get();
    $angebots = DB::table('angebots') ->orderBy('stellenname', 'asc');
    if(!empty($request->get('stellentyp'))){
        $angebots->where('stellentyp', $stellentyp);
    }
    $angebots = $angebots->get();
    $row = $angebots->count(); //this will not cause an issue since the Collection has a count method

    return view('user/angebots', compact('typ', 'stellentyp', 'bereich', 'abschluss', 'row', 'angebots', 'user'));
    }