Laravel 5:在视图中调用模型

时间:2017-12-14 11:20:43

标签: laravel laravel-5

在我的控制器中,我的控制器中有我的模型集合:

$ngo = Ngo::where('slug', $slug)->firstOrFail();
    $projects = $ngo->projects()->get()->toArray();       
    $online_jobs = $ngo->jobs()->online()->get()->toArray();
    $infield_jobs = $ngo->jobs()->inField()->get()->toArray();
    $projects_missions = array_merge($projects, $online_jobs, $infield_jobs)

然后在我看来,我打电话给一个循环:

@foreach ($projects_missions as $j)    
   <h5 class="sBlack">{{ $j['title'] }}</h5>
   @if ($j['type'] == "donation_money")
       @php $current_project = \App\Project::findOrFail($j['id']); @endphp
       <div class="progress-bar"><span class="bar" style="width:{{ $current_project->goalPercentage }}%;"></span></div>

   @elseif ($j['type'] == "field")
      @php  $current_job = \App\Job::findOrFail($j['id']); @endphp
      <p class="info"> <img class="icon" src="{{  asset('assets/images/icons/' .  implode( ",", $current_job->getRelatedCategoriesImage()))}}" />{{ implode( ", ", $current_job->getRelatedCategoriesTitle())  }}</p>
   @endif

正如您所看到的,我希望在我的视图中访问我的模型,这样我就可以调用一个函数。它的工作方式与此类似,但我知道在我的视图中定义变量并不是一个好习惯。 那么我该怎么做才能得到我的$ current_job或$ current_project模型而不是这样定义:

@php   $current_project = \App\Project::findOrFail($j['id']); @endphp

2 个答案:

答案 0 :(得分:0)

您可以将控制器中的变量$current_project传递到您的视图中,如下所示:

$current_project = \App\Project::findOrFail($j['id']);

return view('view_name', ['current_project' => $current_project]);

然后在您的视图中访问它。

答案 1 :(得分:-1)

是的,您可以像这样在视图中调用模型

    @php
    use App\Category;
    use App\Exchange;
    @endphp

这里的类别和Exchange是我的模型,你可以这样使用,制作那个模型的对象      $ exchange = new Exchange(); 现在,您可以在任何位置访问刀片中的$ exchange变量