我有使用 yajrabox 的 laravel 和資料表的 projext,它陷入了關系排序
<?php
namespace App\DataTables;
use DB;
use App\Models\Kabupaten;
use Yajra\DataTables\Html\Button;
use Yajra\DataTables\Html\Column;
use Yajra\DataTables\Html\Editor\Editor;
use Yajra\DataTables\Html\Editor\Fields;
use Yajra\DataTables\Services\DataTable;
class KabupatenDataTable extends DataTable
{
/**
* Build DataTable class.
*
* @param mixed $query Results from query() method.
* @return \Yajra\DataTables\DataTableAbstract
*/
public function dataTable($query)
{
return datatables()
->eloquent($query)
->addIndexColumn()
->addColumn('kordinat', function(Kabupaten $kabupaten) {
return $kabupaten->koordinat_bujur.",".$kabupaten->koordinat_lintang;
})
// ->addColumn( 'action', function($data){ // $data is data od current row in table
// return view( 'kabupaten.action', [ 'data' => $data ] );
// } );
->addColumn('action', 'kabupaten.action');
}
/**
* Get query source of dataTable.
*
* @param \App\Models\Kabupaten $model
* @return \Illuminate\Database\Eloquent\Builder
*/
public function query(Kabupaten $model)
{
// return $model->newQuery()->with('provinsi');
return Kabupaten::with('provinsi')->select('kabupaten.*','provinsi.provinsi');
}
/**
* Optional method if you want to use html builder.
*
* @return \Yajra\DataTables\Html\Builder
*/
public function html()
{
return $this->builder()
->setTableId('kabupaten-table')
->columns($this->getColumns())
->minifiedAjax()
->dom('Bfrtip')
->orderBy(1)
->parameters([
'buttons' => ['excel'],
])
->buttons(
Button::make('create'),
Button::make('export'),
Button::make('print'),
Button::make('reset'),
Button::make('reload')
);
}
/**
* Get columns.
*
* @return array
*/
protected function getColumns()
{
return [
Column::make('DT_RowIndex')->title('No')->orderable(false)->searchable(false),
Column::make('provinsi.provinsi'),
Column::make('status'),
Column::make('kabupaten')->title('Nama kabupaten'),
Column::make('ketinggian'),
Column::make('kordinat')
->exportable(false)
->printable(false),
// Column::make('keterangan'),
Column::computed('action')
->exportable(false)
->printable(false),
];
}
/**
* Get filename for export.
*
* @return string
*/
protected function filename()
{
return 'Kabupaten_' . date('YmdHis');
}
}
這是我的 kabupaten 資料表類
<form id="delete_form" method="POST">
@csrf
@method('DELETE')</form>
<a type="button" href="{{route('adm.kabupaten.show', ['id' => $id])}}" class="btn btn-just-icon btn-round btn-sm btn-info" data-toggle="tooltip" data-placement="bottom" title="detail">
<i class="fa fa-eye"></i>
</a>
<a href="{{route('adm.kabupaten.edit', ['id' => $id])}}" hljs-string">" data-toggle="tooltip" data-placement="bottom" title="ubah">
<i hljs-string">"></i>
</a>
<a href="#" data-url="{{ route('adm.kabupaten.destroy', $id) }}" onclick="return deleteConfirm(this);">
<i class="fa fa-trash"></i>
</a>
<script>
$(function() {
$('[data-toggle="tooltip"]').tooltip();
})
</script>
這是我的行動專欄。
省模式
public function kabupaten()
{
return $this->hasMany(Kabupaten::class);
}
和卡布帕滕模型
public function provinsi()
{
return $this->belongsTo(Provinsi::class);
}
我的問題是為什么kabupaten.action 中的$id回傳 provinsi.id 而不是 kabupaten.id
我已經嘗試過
return Kabupaten::with('provinsi')->select('kabupaten.*','provinsi.provinsi');
$id 回傳 kabupaten.id 但是當我嘗試對列進行排序時,它說沒有找到 coloum provinsi.provinsi 因為 yajra 沒有加入我的查詢。如果我的代碼有任何問題。謝謝
uj5u.com熱心網友回復:
臨時解決
protected function getColumns()
{
return [
Column::make('DT_RowIndex')->title('No')->orderable(false)->searchable(false),
Column::make('provinsi.provinsi')->orderable(false),
Column::make('status'),
Column::make('kabupaten')->title('Nama kabupaten'),
Column::make('ketinggian'),
Column::make('kordinat')
->exportable(false)
->printable(false),
// Column::make('keterangan'),
Column::computed('action')
->exportable(false)
->printable(false),
];
}
我在 provinsi.provinsi 中添加 ->orderable(false)。不知道為什么它解決了問題
uj5u.com熱心網友回復:
嘗試在 query() 中將雄辯的“with”更改為“join”
public function query(Kabupaten $model)
{
return Kabupaten::query()
->leftJoin('provinsi', 'provinsi.id', '=', 'kabupaten.provinsi_id')
->addSelect([
'kabupaten.*',
'provinsi.provinsi as provinsi_provinsi'
]);
}
并添加列
Column::make('provinsi_provinsi')->name('provinsi_provinsi')->title('provinsi_provinsi'),
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/331032.html
