Я хочу присоединиться к некоторым таблицам и получить данные для отображения в таблицах данных. Я недавно использую таблицы данных yajra.
Вот список таблиц, к которым я хочу присоединиться:
- экспедиция:
id, client_id, org_id, expedisi_id, expedisi_name, status, created_at, updated_at
- клиенты:
id, client_id, client_name, status, created_at, updated_at
- организации:
id, org_id, org_name, org_address, status, created_at, updated_at
ПРИМЕЧАНИЕ: id just for indexing, AUTO INCREMENT
Итак проблема в том, что я хочу присоединиться ко всем таблицам выше, я хочу отобразить client_name и org_name вместо отображения client_id и org_id в таблицах данных. Я получаю сообщение об ошибке, если я не использую $ ekspedisi = Ekspedisi :: all () для получения определенных данных в EkspedisiController. php:
DataTables warning: table id=ekspedisis-table - Ajax error. For more information about this error, please see http://datatables.net/tn/7
Вот мой table.blade. php НА РАЗДЕЛЕ СКРИПТА
@push('scripts')
<script type="text/javascript">
var table = $('#ekspedisis-table').DataTable({
processing: true,
serverSide: true,
ajax: 'ekspedisi.json',
columns: [
{ data: 'id', name: 'id' },
{ data: 'expedisi_id', name: 'expedisi_id' },
{ data: 'client_id', name: 'client_id' },
{ data: 'org_id', name: 'org_id' },
{ data: 'expedisi_name', name: 'expedisi_name' },
{ data: 'status', name: 'status'},
{
data: 'action', name: 'action', orderable: false, searchable: false
}
]
});
function deleteEkspedisi(id){
var popup = confirm("Are you sure for delete this data?");
var csrf_token = $('meta[name="csrf-token"]').attr('content');
if(popup == true){
$.ajax({
url : "{{ url('ekspedisi') }}/"+id,
type : "POST",
data : { '_method':'DELETE', '_token': csrf_token, 'id':id },
success : function(data){
table.ajax.reload();
},
error : function(){
alert('Opps: Something Wrong!');
}
});
}
}
</script>
@endpush
EkspedisiController. php
public function json(){
// $ekspedisi = Ekspedisi::all();
$ekspedisi = DB::table('ekspedisis')
->join('clients', 'clients.client_id', '=' ,'ekspedisis.client_id')
->join('organizations', 'organizations.org_id', '=', 'ekspedisis.org_id')
->select('ekspedisis.*', 'clients.client_name', 'organizations.org_name')
->get();
return Datatables::of($ekspedisi)
->addColumn('action', function ($data) {
return '<a href="/ekspedisi/'.$data->id.'/edit" class="btn btn-xs btn-default"><i class="glyphicon glyphicon-edit"></i> Edit</a>
<a onclick="deleteEkspedisi('.$data->id.');" class="btn btn-xs btn-danger"><i class="glyphicon glyphicon-trash"></i> Delete</a>';
})
->editColumn('client_id', function($data){
return $data->client_name;
})
->editColumn('org_id', function($data){
return $data->org_name;
})
->make(true);
}
Экспедици. php (МОДЕЛЬ)
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Ekspedisi extends Model
{
protected $table = 'ekspedisis';
protected $fillable = [
'expedisi_id', 'client_id', 'org_id', 'expedisi_name'
// , 'status'
];
public function client()
{
return $this->belongsTo(Client::class);
}
public function organization()
{
return $this->belongsToMany(Organization::class);
}
}
Клиент. php (МОДЕЛЬ)
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Client extends Model
{
protected $table = 'clients';
protected $fillable = [
'client_id', 'client_name'
// , 'status'
];
public function ekspedisi()
{
return $this->hasMany(Ekspedisi::class);
}
}
Организация. php (МОДЕЛЬ)
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Organization extends Model
{
protected $table = 'organizations';
protected $fillable = [
'org_id', 'org_name', 'org_address'
];
public function ekspedisi()
{
return $this->hasMany(Ekspedisi::class);
}
}
web. php (МАРШРУТЫ)
...
Route::resource('ekspedisi', 'EkspedisiController');
Route::get('ekspedisi.json', 'EkspedisiController@json');
...
ПРИМЕЧАНИЕ: I'm using Laravel 5.8, PostgreSQL