2016-07-25 233 views
1

我有一個Hotel模型,其中hasManyGuests,它又具有兩個動態屬性,如下所示。在Laravel for jQuery Datatable中的動態加載動態屬性

public function getNameAttribute(){ 
    return $this->user->name; 
} 

public function getEmailAttribute(){ 
    return $this->user->email; 
} 

現在我更願意將它們取爲$hotel->guests()->with('user')。現在,當我將它用於Datatable時,出於顯而易見的原因,我無法在視圖中獲得名稱&電子郵件。所以我的問題是,我能否急於加載名稱&電子郵件屬性,以便每當訪客模型獲取時,所述屬性都可用。

請注意,我不會將其返回asArrayasJson,因此$attributes數組的概念不適用(至少據我所知)。

控制器具有以下代碼:

return Datatables::of($guests) 
      ->addColumn('email',function($guest){ 
       return $guest->email; 
      }) 
      ->addColumn('name',function($guest){ 
       return $guest->name; 
      })->make(true); 

但是,數據表無法搜索姓名或電子郵件,因爲它們不是在數據庫中。

我使用jQuery的數據表中的代碼是

$(function() { 
$('#guest-table').DataTable({ 
    processing: true, 
    serverSide: true, 
    ajax: '{!! route('guests.data') !!}', 
    columns: [ 
     { data: 'name', name: 'name', orderable: false }, 
     { data: 'email', name: 'email', orderable: false}, 
     { data: 'mobile', name: 'mobile', orderable: false} 
    ] 
    }); 
}); 

我用Laravel 5yajra/laravel-datatables包這裏

回答

1

爲每Yajra,Laravel文件,你必須調用相關模型的財產這樣一來,

{data: 'relation_name.column', name: 'relationName.column'} 

所以在你的情況下,它會是這樣,

{data: 'user.name', name: 'user.name'} 
{data: 'user.email', name: 'user.email'} 
0

用戶雙引號,如果這個代碼是刀片文件中我會努力

ajax: "{!! route('guests.data') !!}", 

如果你有外部的js文件,然後像這樣使用

創建刀片文件的隱藏字段

<input type="hidden" id="route_url" value="{!! route('guests.data') !!}"> 

而在js文件上路線網址由ID

ajax: $("#route_url").val(),