Laravel 5 |对于具有/多个关系的循环

时间:2015-03-23 21:16:34

标签: php laravel laravel-5

我已经设置了一些模型关系,我正在尝试将该数据提供给一个页面,该页面显示一个包含不同列的表格以显示信息。我已经将3个表(客户,工作,步骤)与Faker虚拟数据一起用于测试。如何拉入“步骤”表列数据?我的控制器定义了Job&的两个变量(2)。步模型,但我不确定如何拉入Step到显示器。我是否必须为控制器中调用的变量做一个数组?

这是我的控制器设置

 public function index()
    {
        $jobs = Job::all();
        $steps = Step::all();
        return view('jobs.home', compact ('jobs', 'steps'));
    }

这是我的刀片设置

   @foreach ($jobs as $job)
     <tr>
        <td>{{ $job->number }}</td>
        <td>{{ $job->customer->name }}</td>
        <td>NEED TO ADD STEPS COLUMN Here</td>
    </tr>
    @endforeach

1 个答案:

答案 0 :(得分:1)

有几种方法可以做到这一点,具体取决于您的“Step”模型为您提供的数据类型。

如果您只需要“Step”模型中的1个项目,您可以先从“Step”模型中找到所需的特定数据,而不是使用Step::all();拉入所有内容,例如,您可以使用一个“收集方法”下更具体的方法,只返回一个项目:https://github.com/susanBuck/notes/blob/master/05_Laravel/11_Databases_Eloquent_Collections.md

如果您需要多个项目,那么您也可以使用更具体的Collection方法;但是,您将不得不循环遍历它以提取每个单独的项目。您必须使用“if”语句来确定哪个项目是您想要的项目,然后以与$job->number之类的“作业”项目相同的方式提取其列数据。

对于第二个问题,您不必使用数组从控制器返回项目。只需获得您想要的价值,如果您愿意,可以返回。例如,要获得第一个“步骤”(如果您只是想要第一个),那么在Controller中执行此操作以返回变量而不是数组:

    public function index()
    {
        $firstStep = Step::first();
        return view('jobs.home')->with('firstStep', $firstStep);
    }

然后在您的Blade文件中,您可以访问数据列行,就像使用$ job变量一样:

   {{ $firstStep->someColumn}}