如何将 eloquent 查询显示到视图 blade 中?

How to display eloquent query into view blade?

我正在查询 'itemregistration' table 中与 'section' table 有 eloquent 关系的员工列表。但是我无法将 table 部分的信息显示到视图 blade.

我的控制器得到如下查询:

  $itemregistrations = Itemregistration::with('section')->get();

当我检查数组时:

 dd($itemregistrations->toArray());  

我得到这个结果:

 0 => array:133 [▼
"ItemRegistrationID" => 1
"RegistrationDate" => "2005-12-01"
"SectionID" => 12
"name" => "A SANTESH"
"section" => array:2 [ …2]
]

部分数组应包含 'SectionID' 和 'sectionname' 字段。

如果我检查 dd($itemregistration);

它产生

 Collection {#1948 ▼
 #items: array:1125 [▼
 0 => Itemregistration {#1990 ▼
  #primaryKey: "ItemRegistrationID"
  #hidden: array:1 [ …1]
  +timestamps: false
  #connection: "mysql"
  #table: null
  #keyType: "int"
  +incrementing: true
  #with: []
  #withCount: []
  #perPage: 15
  +exists: true
  +wasRecentlyCreated: false
  #attributes: array:133 [ …133]
  #original: array:133 [ …133]
  #changes: []
  #casts: []
  #dates: []
  #dateFormat: null
  #appends: []
  #dispatchesEvents: []
  #observables: []
  #relations: array:1 [ …1]
  #touches: []
  #visible: []
  #fillable: []
  #guarded: array:1 [ …1]

我想在 blade 中显示结果,但无法获取节数组值:

 @foreach($itemregistrations as $index => $value)                                                                
    <td>{{ $value->name }}</td>
    <td>{{ $value->section->sectionname }}</td>
 @endforeach 

我也试过:

 @foreach($itemregistrations as $index => $value)                                                                
    <td>{{ $value->name }}</td>
    @foreach($value as $section => $val) 
     <td>{{ $val->sectionname }}</td>
    @endforeach 
 @endforeach 

但也失败了。出现的错误是"Trying to get property of non-object".

我试图通过这段代码查看collection中包含的值:

    @foreach ($itemregistrations as $item)
     <tr>
       <td>{{ $item }}</td>
       <td>{{ $item->section }}</td>                             
     </tr>
    @endforeach  

它以这种格式显示这个值:

{"ItemRegistrationID":1,"name":"A Santesh"{"SectionID":12,"sectionname":"E"}}

如果我用这个显示结果: @foreach ($itemregistrations as $item) {{ $item->name }}
@endforeach

我可以得到名单,但要用这个得到sectionname

    @foreach ($itemregistrations as $item)
     <tr>
       <td>{{ $item->section->sectionname }}</td>                           
     </tr>
    @endforeach 

显示错误"Trying to get property of non-object "。我不明白为什么我无法获得部分值。

我的版块模型:

  class Section extends Authenticatable
{
protected $table = 'sections';
protected  $primaryKey = 'SectionID';
 /**
 * Get the user that have agama.
 */
public function itemregistrations()
{
    return $this->hasMany('App\Itemregistration', 'SectionID', 'ItemregistrationID');
}

}

物品注册型号:

  class Itemregistration extends Model 
{
protected  $primaryKey = 'ItemRegistrationID';

/*
 * Get all of the owning models.
 */

public function section()
{
    return $this->belongsTo('App\Section', 'SectionID');

}

如何显示包含部分数组值的查询?

您可以使用以下代码:

@foreach($itemregistrations as $index => $value)
  <td>{{ $value->name }}</td>
  @foreach($value->section as $section) 
    <td>{{ $section->sectionname }}</td>
  @endforeach 
@endforeach 

我假设 @foreachCollection 上调用了 toArray(),那么您应该将数据作为命名数组来处理,所以试试这个:

@foreach($itemregistrations as $index => $value)                                                                
  <td>{{ $value['name'] }}</td>
  @foreach($value['section'] as $section => $val) 
    <td>{{ $val['sectionname'] }}</td>
  @endforeach 
@endforeach 

感谢其他人对我问题的帮助。

我配置了正确的语法来获取节数组中节名的值。我不知道为什么我不能使用 -> 助手来获取值。我尝试了以下语法,它可以在 blade 视图中获取值。

 @foreach ($itemregistrations as $item)
 <tr>
   <td>{{ $item->name }}</td> //also can <td>{{ $item['name'] }}</td>
   <td>{{ $item['section]['sectionname'] }}</td>                             
 </tr>
@endforeach