【问题标题】:Laravel 4 - Foreach Queries Inside Views for HeadersLaravel 4 - Foreach 查询内部视图的标题
【发布时间】:2014-01-23 05:17:36
【问题描述】:

我正在尝试生成一个页面,该页面将输出部分标题(从一个表中检索,即俱乐部名称)以及这些标题下的更多数据(即俱乐部成员)。

类似这样的:

  • 标题
    • 会员 1
    • 会员2
    • 会员 3
  • 标题
    • 会员
    • 会员

我知道这将需要 2 个 foreach 控件,但我不知道如何让 Laravel 接受一个查询,该查询将具有另一个查询的参数(例如,查询 1 提供了 clubID,会员的 Query2 将接受那个来自查询 1) 的 clubID)

在维护 MVC 的同时我应该如何做到这一点?

【问题讨论】:

  • 那不是 MVC。您的树应该在发送到视图之前构建。视图不应进行任何查询。使用 Eloquent ORM 很容易设置该数据结构,然后将其发送到视图并循环遍历它。你读过文档吗?现在你的问题太宽泛了。你试过什么?

标签: php laravel laravel-4


【解决方案1】:

这看起来与数据库和模型关系有关。例如,如果您有一个表 club_names 和另一个表 club_members,那么您可以创建一个 Club 模型,如

class Club extends Eloquent {

    protected $table = 'club_names';

    public function members()
    {
        return $this->hasMany('Member', 'club_name_id');
    }

}

为此,您的数据库表需要如下所示

club_names

id | club_name | other_fields

club_members

id | club_name_id | member_name | other_fields

这里,club_names 表的id 应该是club_members 表的外键,如果满足这些条件,那么您可以按如下方式访问俱乐部成员

$clubs = Club::with('members')->get();
return View::make('your_view')->with('clubs', $clubs);

在你看来,那么你可以使用

@foreach($clubs as $club)
    <div class='club'>
        {{ $club->club_name }}
        @foreach($club->members as $member)
            <div>
                <p>{{ $member->member_name }}</p>
                <p>{{ $member->other_fields }}</p>
            </div>
        @endforeach
    </div>
@endforeach

Laravel 网站上阅读有关relationships 的更多信息。

【讨论】:

  • 这绝对是我要找的。如果我使用 hasManyThrough 关系怎么办? (假设成员只是一个表,其中包含另一个表的 ID,例如具有成员实际数据的官员)。我将如何输出? (顺便说一句,我有查询工作)
  • 其实hasManyThrough需要三个相关的表,第一个表使用中间表的字段与第三个表使用该字段关联,如果你有这样的设置,那么你可以使用它来代替。跨度>
猜你喜欢
  • 2013-08-19
  • 1970-01-01
  • 2014-12-17
  • 2017-07-25
  • 1970-01-01
  • 2016-03-30
  • 1970-01-01
  • 2015-02-13
  • 2014-10-04
相关资源
最近更新 更多