为了账号安全,请及时绑定邮箱和手机立即绑定

如何在刀片模板的 foreach 循环中访问 laravel 集合?

如何在刀片模板的 foreach 循环中访问 laravel 集合?

PHP
蛊毒传说 2021-07-06 16:49:27
我想从表中的用户名信息Users与笔者id从表S = Pages。为此,我做了一个foreach循环并将数据添加到users数组中。这会获取数据,但其格式不正确,无法在刀片模板中使用。下面是代码:$pages = \App\page::all();    $users = array();    foreach ($pages as $page) {        $user = \App\user::where('id', $page->author)->get('name');        $users[] = $user;    }           dd($users);    return view('admin.pages', compact('pages', 'users'));我已经用dd($users)方法转储了结果并得到了这个:我在刀片模板中使用此代码来检索但在该$users[$loop->index]->get('name')位置获得空白。@foreach ($pages as $page)            <tr>              <th>{{ $page->id }}</th>              <th>{{ $page->title }}</th>              <th>{{ $users[$loop->index]->get('name') }}</th>              @if($page->status = 'ACTIVE')              <th><span class="label label-success">{{ $page->status }} </span></th>              @elseif($page->status = 'DRAFT')              <th><span class="label label-warning">{{ $page->status }} </span></th>              @endif              <th>{{ $page->Actions }}</th>            </tr>            @endforeach
查看完整描述

3 回答

?
繁华开满天机

TA贡献1816条经验 获得超4个赞

你没有正确定义你的关系。App\User应该在模型中定义:


public function pages()

{

    // have to specify the key name is author, not user_id

    return $this->hasMany("App\Page", "author");

}

然后在App\Page模型中你有这个:


public function pageauthor()

{

    // have to specify the key name is author, not user_id

    return $this->belongsTo("App\User", "author");

}

然后在您的 Blade 模板中,您只需引用$page->author->name:


@foreach ($pages as $page)

            <tr>

              <th>{{ $page->id }}</th>

              <th>{{ $page->title }}</th>

              <th>{{ $page->pageauthor->name }}</th>

...


查看完整回答
反对 回复 2021-07-09
?
心有法竹

TA贡献1866条经验 获得超5个赞

像这样的东西应该可以帮助你


您的控制器


$pages = \App\page::all();

foreach ($pages as $page) {

    $user = \App\user::find($page->author)->pluck('name');

    if(isset($user)){

      $page['user_name'] = $user->name;

    } else {

       $page['user_name'] = 'N/A';

     }

}

return view('admin.pages', compact('pages'));

你的看法


    @foreach ($pages as $page)

            <tr>

              <th>{{ $page->id }}</th>

              <th>{{ $page->title }}</th>

              <th>{{ $page->user_name) }}</th>

              @if($page->status = 'ACTIVE')

              <th><span class="label label-success">{{ $page->status }} 

    </span></th>

              @elseif($page->status = 'DRAFT')

              <th><span class="label label-warning">{{ $page->status }} 

</span></th>

               @endif

              <th>{{ $page->Actions }}</th>

            </tr>

            @endforeach

代码与您当前的代码有何不同


1) 它在主集合本身 ($pages) 中写入用户名,从而让您不必担心在视图中只循环遍历一个集合


2)它使用laravel,find()因为页面只能有作者(我假设)(注意:find()基于您的主键工作,在这种情况下,它将搜索最常见的主键列id列)


3)它使用 pluck()


查看完整回答
反对 回复 2021-07-09
  • 3 回答
  • 0 关注
  • 169 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信