Предложения по заполнению моей таблицы HTML в представлении из 3 различных таблиц SQL в Laravel 5.5? - PullRequest
0 голосов
/ 28 ноября 2018

Надеюсь, вы могли бы помочь мне с моей проблемой здесь.То, что я хотел бы сделать, это заполнить мою таблицу в моем представлении из запрашиваемых данных в 3 различных таблицах SQL.

Как мне заполнить это: View

Из этих собранных данных:

data

MySQL Query:

-- Ordered Query

SELECT abstract_supplier.supplier,abstract_supplier.canvasser_name,abstract_supplier.canvasser_department, abstract_items.particulars, abstract_items.qty,abstract_items.unit,abstract_price.unit_price, abstract_price.total_price 
    -> FROM abstract_items
    -> RIGHT JOIN abstract_price ON abstract_price.item_id = abstract_items.id
    -> LEFT JOIN abstract_supplier ON abstract_supplier.id = abstract_price.supplier_id;

Мой контроллер:

 public function show($id)
    {
        $abstract = AbstractModel::find($id);
        $office = Office::all();
        $pr_item = PurchaseRequestItemModel::all()->where('pr_form_number',$abstract->pr_number);
        $grand_total = $pr_item->sum('pr_estimated_cost');

        $abstract_items = abstractitemmodel::all()->where('abstract_id',"=",$abstract->id);

        $query= DB::table('abstract_supplier')
        ->paginate(3);

        // dd($query);
        return view('abstract.abstract-form',compact('abstract','abstract_items','pr_item','grand_total','office','query','supp_query'));
    }

My View

<div>
    <table class="table table-responsive table-bordered table-condensed">
      <thead class="text-center">
        <tr class="center-t">
            <th  rowspan="3" class="col-xs-3">Particulars</th>
            <th rowspan="3" class="col-xs-1">Qty</th>
            <th  rowspan="3" class="col-xs-1">Unit</th>

            @php $counter = 0; @endphp
            @foreach($query as $key => $suppliername)
            @php $counter++; @endphp
            <th colspan="2" class="col-xs-2">Supplier {{$counter}}</th>     
            @endforeach
            @if($query->count() < 3)
                @for($i = $query->count(); $i < 3; $i++)
                <th colspan="2" class="col-xs-2">Supplier</th>
                @endfor
            @endif

        </tr>
        <tr>

            @foreach($query as $indexKey => $suppliers)
            <td colspan="2" class="col-xs-2 someCell">{{$suppliers->supplier}}</td>
            @endforeach
            @if($query->count() < 3)
                @for($i = $query->count(); $i < 3; $i++)
                <td colspan="2" class="col-xs-2">N/A</td>
                @endfor
            @endif



        </tr>
        <tr class="center-t">

            @foreach($query as $key => $prices)
            <th class="col-xs-1">Price/Unit</th>
            <th class="col-xs-1">Price/Item</th>
            @endforeach
            @if($query->count() < 3)
                @for($i = $query->count(); $i < 3; $i++)
                <th class="col-xs-1">Price/Unit</th>
                <th class="col-xs-1">Price/Item</th>
                @endfor
            @endif

        </tr>
      </thead>
      <tbody>
        @foreach($abstract_items as $key2 => $items)
        <tr>
            <td>{{$items->particulars}}</td>
            <td>{{$items->qty}}</td>
            <td>{{$items->unit}}</td>
            @foreach($query as $price_key => $prices)
            <td  class="text-right"></td>
            <td  class="text-right"></td>
            @endforeach
            @if($query->count() < 3)
                @for($i = $query->count(); $i < 3; $i++)
                <td class="col-xs-1">N/A</td>
                <td class="col-xs-1">N/A</td>
                @endfor
            @endif
        </tr>
        @endforeach
      </tbody>
    </table>
    {{$query->links()}}
</div>

Как вы можете видеть, я использовал foreach для зацикливания и заполненияТаблица, но результаты не то, что я ожидал, я хотел бы ваши идеи и предложения о том, как я могу подойти к этому.

1 Ответ

0 голосов
/ 29 ноября 2018

Хотя я бы переименовал вашу AbstractModel , потому что это может вызвать серьезную путаницу у других программистов и не следовать соглашениям, я думаю, я понял, что вы ищете:

class AbstractModel extends Model
{
    // protected $table = 'abstract';
    protected $fillable = [
        'id',
        'created_at',
        'created_by' ,
        'abstract_no',
        'pr_number',
        'proc_details',
        'office',
        'requestor_name'
    ];

    public function offices()
    {
        return $this->hasOne('App\Office', 'id', 'office');
    }

    public function purchaseRequestItemModels()
    {
        return $this->hasOne('App\PurchaseRequestItemModel', 'id', 'pr_number');
    }

}

Class Office extends Model
{

    ...

    public function abstractModels()
    {
        return $this->belongsTo('App\AbstractModel', 'office', 'id');
    }

}

class PurchaseRequestItemModel extends Model
{
    ...

    public function abstractModels()
    {
        return $this->belongsTo('App\AbstractModel', 'pr_number', 'id');
    }

}

Вы можетезатем перейдите к созданию экземпляра AbstractModel и перехватите связанные офисы и номера PRN, как показано ниже:

$abstract = AbstractModel::find($id);

//These method calls return Objects of the type:
// Office
$abstract->offices();

//PurchaseRequestItemModel
$abstract->purchaseRequestItemModels();

Теперь, пожалуйста, проверьте стандарты кодирования , чтобы еще больше улучшить семантику и качество кода, так как это поможет ОЧЕНЬ многов будущем!

ПРИМЕЧАНИЕ: Я понимаю, что у вас могут быть другие classes, которые общаются друг с другом, и вы можете достичь того же результата, если создадите отношения, как я иллюстрировал выше.

Дальнейшее объяснение отношений можно найти здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...