我有一个hasMany Guests的Hotel模型,它有两个动态属性,如下所示。
public function getNameAttribute(){
return $this->user->name;
}
public function getEmailAttribute(){
return $this->user->email;
}现在,我更喜欢将它们作为$hotel->guests()->with('user')来获取。现在,当我将它用于Datatable时,由于显而易见的原因,我无法在视图中获得名称& email。所以我的问题是,我是否可以立即加载name和email属性,以便每当获取来宾模型时,所述属性都可用。
请注意,我不会返回asArray或asJson,因此$attributes数组的概念不适用(至少据我所知)。
控制器具有以下代码:
return Datatables::of($guests)
->addColumn('email',function($guest){
return $guest->email;
})
->addColumn('name',function($guest){
return $guest->name;
})->make(true);但是,datatable无法搜索名称或电子邮件,因为它们在数据库中不可用。
我使用的jquery datatable代码是
$(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包
发布于 2016-07-25 22:03:47
根据Yajra,Laravel文档,您必须以这种方式调用相关模型的属性。
{data: 'relation_name.column', name: 'relationName.column'}所以在你的例子中,它将是这样的,
{data: 'user.name', name: 'user.name'}
{data: 'user.email', name: 'user.email'}发布于 2016-07-25 21:39:43
用户双引号在这里,我将工作,如果这个代码是在刀片文件内
ajax: "{!! route('guests.data') !!}",如果你有外部的js文件,那么就像这样使用
在刀片文件中创建隐藏字段
<input type="hidden" id="route_url" value="{!! route('guests.data') !!}">并在js文件中通过id获取路由url。
ajax: $("#route_url").val(),https://stackoverflow.com/questions/38569276
复制相似问题