преобразование данных столбца в качестве заголовка таблицы фреймворк Laravel


преобразование данных столбца в качестве заголовка таблицы фреймворк Laravel

31.08.2020 12:52:36 Просмотров 26 Источник

привет форум как преобразовать столбец created_at в таблицу заголовка и синхронизировать его с заголовком столбца. это моя база данных my data base

ниже приведен мой код клинка

    <div class="container">           
    <table class="table table-striped"> 
        <thead>  
            <tr>
                    <th>No</th>
                    <th>Name</th>
                    @foreach($users as $u=>$user)
                        @foreach($user->posts as $p)
                        <th>{{$p->created_at}}</th>
                        @endforeach
                    @endforeach
            </tr>
        </thead>
          <tbody>
        @foreach($users as $u=>$user)
        <tr>
            <td>{{$u+1}}</td>
            <td>{{ $user->name }}</td>
            @foreach($user->posts as $p)
            <td><a href ="/posts/{{$p->id}}">{{$p->title}}</a></td>
        </tr>
        @endforeach
          </tbody>
    </table>
  </div> 

это мой взгляд на лезвие my blade view

у меня есть 2 таблицы, таблица пользователя и таблица post. у пользователя может быть много постов.

это моя почтовая модель

my post model

это моя модель пользователя

user model

это мой пост контролера

my post controller

спасибо.

У вопроса есть решение - Посмотреть?

Ответы - преобразование данных столбца в качестве заголовка таблицы фреймворк Laravel / how to convert column data as table header laravel

Является ответом!
nice_dev

31.08.2020 03:13:07

Вы можете собрать все created_at в новый массив с помощью директивы @php и использовать 2 вложенных цикла Для сравнения при отображении.

Пробежитесь по всем created_at и проверьте, совпадает ли какое-либо время поста. Если да, выведите на экран метку якоря и вырвитесь из цикла. Если ни один из них не совпадает, выведите пустой td.

<div class="container">           
<table class="table table-striped"> 
    <thead>  
        <tr>
                <th>No</th>
                <th>Name</th>
                @php
                    $created_ats = []
                @endphp
                @foreach($users as $u => $user)
                    @foreach($user->posts as $p)
                    <th>{{ $p->created_at }}</th>
                    @php
                        $created_ats[] = $p->created_at
                    @endphp
                    @endforeach
                @endforeach
        </tr>
    </thead>
    <tbody>
    @foreach($users as $u => $user)
        <tr>
            <td>{{$u+1}}</td>
            <td>{{ $user->name }}</td>
            @foreach($created_ats as $created_at)
                @foreach($user->posts as $p)
                    @if($p->created_at == $created_at)
                        <td><a href ="/posts/{{$p->id}}">{{$p->title}}</a></td>
                        @break
                    @endif
                    @if($loop->last)
                        <td></td>
                    @endif
                @endforeach         
            @endforeach        
        </tr> 
    @endforeach   
    </tbody>
</table>
</div> 

Если вам нужны даты в отсортированном формате, соберите их все в своем контроллере usort с помощью класса DateTime и передайте в представление.

Код контроллера:

<?php 

public function index(){
    $users = User:all();
    $created_ats = [];
    foreach($users as $u=>$user){
        foreach($user->posts as $p){
            $created_ats[] = $p->created_at;
        }
    }

    usort($created_ats,function($date1,$date2){
        $date1 = \DateTime::createFromFormat('Y-m-d H:i:s', $date1);
        $date2 = \DateTime::createFromFormat('Y-m-d H:i:s', $date2);
        return $date1 <=> $date2; // needs PHP7 minimum
    });

    return view('posts.index',compact('users','created_ats'));
}

Лезвие:

<div class="container">           
<table class="table table-striped"> 
    <thead>  
        <tr>
                <th>No</th>
                <th>Name</th>
                @foreach($created_ats as $created_at)
                    <th>{{ $created_at }}</th>
                @endforeach
        </tr>
    </thead>
    <tbody>
    @foreach($users as $u => $user)
        <tr>
            <td>{{$u+1}}</td>
            <td>{{ $user->name }}</td>
            @foreach($created_ats as $created_at)
                @foreach($user->posts as $p)
                    @if($p->created_at == $created_at)
                        <td><a href ="/posts/{{$p->id}}">{{$p->title}}</a></td>
                        @break
                    @endif
                    @if($loop->last)
                        <td></td>
                    @endif
                @endforeach         
            @endforeach        
        </tr> 
    @endforeach   
    </tbody>
</table>
</div>
Помочь в развитии проекта:
Закрыть X