【问题标题】:blade - foreach $loop->iteration刀片 - foreach $loop-> 迭代
【发布时间】:2020-05-19 15:13:54
【问题描述】:


我遇到了一些循环问题。

我有 2 个表 Terms [id, caption, ...] 和 apps [id, term_id, name, ...]

在我看来,我想打印所有 apps 按 term_id 然后按名称排序。但我希望 apps 中使用的每个 term_id 都有 1 个表。我希望第一个列具有正确的 $loop->iteration(我的意思是每个表的第一行从 1 开始,而不是从上一个表的最后一行开始 +1)

在控制器中,我将 2 个变量传递给我的视图(每个 appState_id 值我都有不同的视图)

$app = Application::where('ApplicationState_id',3)->get();
$term = Terms::all();
return view('admin.index')->with('terms', $term)
                          ->with('apps', $app);

在视图中我在 foreach 中使用了 foreach / 我稍微重建了它

foreach terms as term
 foreach apps as app
   if $loop->first {<table><thead> ... table caption row ...}
   checking if app->term_id = term->id
      $loop->iteration, and some other stuff
   if $loop->last {</table>}
 endforeach
endforeach

但我希望它改进一点:

即使应用表中没有记录,它也会为所有术语写入表的第一个/标题/行
$loop->iteration 按所有记录组合 我希望每张桌子都单独使用它-我不知道我能做到吗

如何将控制器中的所有数据传递给能够将它们分别打印到对应表?

有没有更好的方法来做到这一点?感谢您的建议/提示
---编辑了一点点缩短
Application.php

class Application extends Model
{
    protected $fillable = [
        'nickname',
        'comment',
        'term_id',
        'applicationstate_id',
    ];

    public function term()
    {
        return $this->belongsTo('App\Term', 'Term_id');
    }
}

Term.php - 这个模型/表格是由我自己填写的,但我想在未来改变用户可以添加其他事件的条款

class Term extends Model
{
    public function applications()
    {
        return $this->hasMany('App\Application');
    }
}

我知道我可以在控制器中:

  1. 检查应用程序表 {n} 中有多少唯一 term_id
  2. 循环 1... {n}

    内部循环从数据库中为每个查询/每个 term_id 读取数据并将结果添加到数组中

将此结果数组发送到查看

然后尝试将其打印为每个 term_id 的 {n} 个表
这是如何解决这个问题的好主意,还是有更好的方法?
表格应用程序 data from applications table/few records/

页面上的理想输出 ideal output scheme

【问题讨论】:

    标签: laravel eloquent laravel-blade


    【解决方案1】:

    你能在你的应用中粘贴两个模型吗

    编辑

    在您的应用程序类中更改 trem 的外键

    public function term() {
       return $this->belongsTo('App\Term', 'term_id');
     }
    

    在你的控制器中

    $app = Application::with('term')->where('applicationstate_id',3)->get();  
    return view('admin.index')->with('apps', $app);
    

    在你的 admin/index.blade.php 中

    @foreach($apps as $item )
          $item->trem->your attributes trem
          $item->nickname
    @endforech
    

    【讨论】:

    • 您好,我编辑了我的第一篇文章,希望可以帮助您更好地理解我的问题
    • 这应该是评论而不是答案。
    • 对我尝试的所有字段都不起作用“此集合实例上不存在属性 [***]”。
    • 我再次编辑了我的答案,如果您再次遇到错误,请查看代码
    • 嗨@user8210918,现在它可以正常工作,没有错误。但我仍然不知道如何为每个唯一的 term_id 打印 1 个表,每个表都有对应的表行索引。我编辑了第一篇文章并添加了一些我想要实现的数据和输出图片
    【解决方案2】:

    我是这样做的:

    检查应用程序表 {n} 中有多少唯一 term_id 循环 1... {n}

    内部循环从数据库中为每个查询/每个 term_id 读取数据并将结果添加到数组中

    然后我将这个结果数组发送给查看

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-18
      • 1970-01-01
      • 2023-03-28
      • 2015-06-21
      • 2017-06-20
      • 2018-04-04
      • 2021-10-19
      • 1970-01-01
      相关资源
      最近更新 更多