在刀片

时间:2018-02-06 01:54:46

标签: php mysql twitter-bootstrap laravel laravel-blade

我有一个简单的Laravel项目,用于在表中显示父记录,并使用可折叠的行显示子记录。我有一个很好的Bootstrap表,可以加入我的控制器中的父表和子表并填充表,但不能将子组分组在一个父表下。我不确定我是否在控制器中错误地构建了传递的数据集,或者我是否缺少一些“Laravel方式”来执行此操作。这是一个简单的命题,循环通过父母,直到有一个孩子,然后循环通过它的孩子,然后恢复循环父母等,但它让我疯了。我找不到任何直接的例子或参考来解决我的问题,但这是一个常见的要求。

我需要知道如何引用子记录来遍历它们以填充折叠部分。我的尝试要么导致每个孩子的父行(显示的代码)或一堆重复的子项。如果我可以从我的控制器传递两个数据集,一个父母和一个独立的孩子,那么我可以在代码中构建这个,但我不知道如何在Laravel中执行此操作或者是否有更简单的方法。

我确实从Laravel DataTables开始,但为了获得详细的子行需要在Laravel中实现把手模板,我找不到可用的引用来做到这一点,所以决定使用Bootstrap表从我自己的代码恢复到自己的代码。比我卡住了。

这是我的控制器(DataassetsController.php)。 “投资帐户”表包含父项(与其他联合表一样),“投资行项目”表包含“投资帐户”的子记录。

class DataassetsController extends Controller
{

     public function getUnion()
     {

        $money = DB::table('monetary_assets')
        ->select(['monetary_asset_name as name', 'monetary_asset_type as type', 'monetary_asset_value as value', DB::raw("NULL as item"), DB::raw("NULL as institution_id"), DB::raw("NULL as item_id")]);

        $personal = DB::table('personal_property_assets')
        ->select(['personal_name as name', 'personal_type as type', 'personal_current_value as value', DB::raw("NULL as item"), DB::raw("NULL as institution_id"), DB::raw("NULL as item_id")]);


        $investments = DB::table('investment_accounts')
        ->join('investment_line_items', 'investment_institution_name_id', '=', 'investment_accounts.id')
        ->select(['investment_institution_name as name', 'Investment_account_type as type', DB::raw("NULL as value"), 'investment_name as item', 'investment_institution_name_id as institution_id', 'investment_accounts.id as item_id' ]);


        $union = DB::table('real_property_assets')
        ->select(['real_name as name', 'real_type as type', 'real_current_value as value', DB::raw("NULL as item"), DB::raw("NULL as institution_id"), DB::raw("NULL as item_id")])
        ->union($money)
        ->union($personal)
        ->union($investments)
        ->get();

            return view('assets.allassets', ['user_assets' => $union]);

     }

这是我的路线:

Route::get('/dataassets', 'DataassetsController@getUnion');

这是我的刀片(allassets.blade.php)代码:

@extends('layouts.master')

<!--  Collapsible accordion rows in bootstrap  -->

<div class="col-lg-6">
            <div class="panel panel-default">
            <div class="panel-heading"><h3>All Assets</h3></div>
            <div class="panel-body">
<table class="table table-condensed" style="border-collapse:collapse;">

    <thead>
        <tr><th>&nbsp;</th>
            <th>Asset Name</th>
            <th>Type</th>
            <th>Value</th>
        </tr>
    </thead>

    <tbody>
    @foreach ($user_assets as $user_asset) <!-- don't forget to add a variable to the loop to index ID's of subrow -->
        <tr data-toggle="collapse" data-target="#demo{{$loop->index}}" class="accordion-toggle"> 
       @isset($user_asset->item)
                <td><button class="btn btn-default btn-xs"><span class="glyphicon glyphicon-eye-open"></span></button></td>
        @else
                <td></td>
        @endisset
            <td>{{$user_asset->name}}</td>
            <td>{{$user_asset->type}}</td>
            <td style="text-align:right">${{ number_format($user_asset->value,2)}}</td>
            <?php $var = ($user_asset->name); ?>

        </tr>
        @isset($user_asset->item)


        <tr>
            <td colspan="12" class="hiddenRow"><div class="accordian-body collapse" id="demo{{$loop->index}}"> 
            <table class="table table-striped">
                    <thead>
                        <th>Item</th>
                        <th>Value</th>
                        <th>Institution</th>
                        <th>Item</th>
                        <th>Edit</th>
                    </thead>
                    <tbody>


                        <tr>

                            <td>{{$user_asset->item}}</td>
                            <td> placeholder</td>
                            <td> {{$user_asset->institution_id}}</td>
                            <td> {{$user_asset->item_id}}</td>
                            <td><a href="#" class="btn btn-default btn-sm">
                                <i class="glyphicon glyphicon-cog"></i></a></td></tr>


                    </tbody>
            </table>

            </div> </td>
        </tr>
        @endisset
        @endforeach

    </tbody>
</table>
            </div>

          </div> 

      </div>

      <!--     end Bootstrap table    -->

这是我得到的图片,其中一个子行被弹出: Bootstrap table showing only one child at a time with multiple copies of parent

以下是相关数据库表的图片: The parent and child tables (other tables referenced above do not have children, only this one)

我正在使用Laravel 5.5&amp; XAMPP上的PHP7 非常欢迎任何帮助或建议。

0 个答案:

没有答案