我有一个Hotel
模型,其中hasMany
Guests
,它又具有两个动态属性,如下所示。在Laravel for jQuery Datatable中的动态加载动态属性
public function getNameAttribute(){
return $this->user->name;
}
public function getEmailAttribute(){
return $this->user->email;
}
现在我更愿意将它们取为$hotel->guests()->with('user')
。现在,当我将它用于Datatable时,出于显而易见的原因,我无法在视图中获得名称&电子邮件。所以我的问题是,我能否急于加载名称&电子邮件属性,以便每当访客模型获取时,所述属性都可用。
请注意,我不会将其返回asArray
或asJson
,因此$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 5
和yajra/laravel-datatables
包这里