Laravel雄辩的数据表 SQLSTATE[42S22]:找不到列:1054 'where clause'中未知列'sector.location.location_name'



我正在用Laravel和Datatables做一个项目。我用的是雄辩。 数据表正确填充表,但是当我进行(数据表(搜索时,我收到错误:

下一页 Illuminate\Database\QueryException: SQLSTATE[42S22]: 列不是 找到:1054 "其中"中的未知列"sector.location.location_name" 条款'...

你能推荐一个解决方案吗?

表结构:

--change_logs表

id                
username          
sector_id         
operation_id     
layer_category_id 
object_name

--部门表

id         
sector_name 
location_id

--位置表

id
location_name

在数据表中 Ajax 我使用

{数据:"sector.location.location_name",名称: ">sector.location.location_name"},我收到错误"列不是 找到:1054 未知列">sector.location.location_name" 'where条款'">

如果我使用表的名称而不是这样的对象:

{data: 'sector.location.location_name', name: '**sectors.locations.location_name**'},

我仍然收到错误:

找不到列:1054 未知列 "where"子句中的">sectors.locations.location_name">

数据在数据表表中正确加载,但搜索不起作用

//changelogs.blade.php
var table = $('.data-table').DataTable({
processing: true,
serverSide: true,
ajax: "{{ route('change_logs.index') }}",
columns: [
//{data: 'DT_RowIndex', name: 'DT_RowIndex'},
{data: 'id', name: 'change_logs.id'},
{data: 'user.name', name: 'user.name'},
{data: 'user.username', name: 'user.username'},
{data: 'sector.location.location_name', name: 'sector.location.location_name'},
{data: 'sector.sector_name', name: 'sector.sector_name'},
{data: 'layer_category.layer.layer_name', name: 'layer_category.layer.layer_name'},
{data: 'layer_category.category_name', name: 'layer_category.category_name'},
{data: 'object_name', name: 'object_name'},
{data: 'operation.operation_name', name: 'operation.operation_name'},
{data: 'action', name: 'action', orderable: false, searchable: false},
]
});


//controller
$data = ChangeLog::with('user','sector','operation','layer_category' )->select('change_logs.*');
return Datatables::of($data)

//class ChangeLog
<?php
namespace App;
use IlluminateDatabaseEloquentModel;
class ChangeLog extends Model
{
protected $fillable = [
'username', 'sector_id','operation_id', 'layer_category_id', 'object_name'
];
protected $hidden = [
];  
public function location()
{
return $this->belongsTo('AppLocation');
}
public function user()
{
//return $this->belongsTo('AppUser');
return $this->belongsTo('AppUser', 'username', 'username');
}
public function sector()
{
return $this->belongsTo('AppSector')->with('location');
}
public function operation()
{
return $this->belongsTo('AppOperation');
}
public function layer_category()
{
return $this->belongsTo('AppLayerCategory')->with('layer');
}

}
//class Sector
<?php
namespace App;
use IlluminateDatabaseEloquentModel;
class Sector extends Model
{
protected $fillable = [
'sector_name','location_id',
];
protected $hidden = [
];
public function location()
{
return $this->belongsTo('AppLocation');
}
}
//class Location
<?php
namespace App;
use IlluminateDatabaseEloquentModel;
class Location extends Model
{
protected $fillable = [
'location_name',
];
protected $hidden = [
];
public function sectors()
{
return $this->hasMany('AppSector');
}
}

您是否定义了将位置映射到扇区的关系?从您的表结构来看,一个位置可以有多个扇区,这就是我们在扇区中具有location_id的原因。因此,您应该在相应的模型中定义此关系。

应用\扇区.php

...
public function location() {
return $this->belongsTo('AppLocation');
}

应用\位置.php

...
public function location() {
return $this->hasMany('AppSector');
}

最新更新