Как отобразить красноречивый запрос в виде лезвия? - PullRequest
0 голосов
/ 26 сентября 2019

Я запрашиваю список сотрудников из таблицы 'itemregistration' с красноречивой связью с таблицей 'section'.Но я не могу отобразить информацию из таблицы разделов на блэйд вида.

Мой контроллер получает запрос следующим образом:

  $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]

Я хочу отобразить результат в блейде, но не смог получить значение массива раздела:

 @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 

Но тоже не удалось.Появляется ошибка «Попытка получить свойство необъекта».

Я пытался просмотреть значения, содержащиеся в коллекции, через этот код:

    @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

Iможет получить список имен, но для получения имени раздела с этим

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

Отображается ошибка «Попытка получить свойство необъекта».Я не понимаю, почему я не могу получить значения раздела.

Моя модель раздела:

  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');

}

Как получить отображение запроса со значениями массива раздела?

Ответы [ 3 ]

1 голос
/ 26 сентября 2019

Я предполагаю, что @foreach вызывает toArray() на Collection, поэтому вы должны обрабатывать ваши данные как именованный массив, поэтому попробуйте это:

@foreach($itemregistrations as $index => $value)                                                                
  <td>{{ $value['name'] }}</td>
  @foreach($value['section'] as $section => $val) 
    <td>{{ $val['sectionname'] }}</td>
  @endforeach 
@endforeach 
1 голос
/ 26 сентября 2019

Вы можете сделать с помощью следующего кода:

@foreach($itemregistrations as $index => $value)
  <td>{{ $value->name }}</td>
  @foreach($value->section as $section) 
    <td>{{ $section->sectionname }}</td>
  @endforeach 
@endforeach 
0 голосов
/ 27 сентября 2019

Спасибо за помощь других в моем вопросе.

Я настроил правильный синтаксис для получения значений sectionname в массиве section.Я не знаю, почему я не могу использовать -> помощник, чтобы добраться до значений.Я попробовал следующий синтаксис, и он может получить значения в режиме просмотра лезвия.

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