laravel - 未找到基表或视图:1146 表 'pht.location_id' 不存在
问题描述
我的数据库中没有此名称(location_id)的表,但它给了我错误。
“消息”:“SQLSTATE [42S02]:未找到基表或视图:1146 表 'pht.location_id' 不存在(SQL:选择
locations
.*location_id
、.location_trails_id
aspivot_location_trails_id
、location_id
.location_id
aspivot_location_id
fromlocations
inner joinlocation_id
onlocations
.id
=location_id
.location_id
wherelocation_id
.location_trails_id
in (11, 13, 15, 16, 121, 123, 124, 181))",
我找不到如何解决它。请帮我解决这个问题。提前致谢。
这是我的控制器的代码。
public function get($id)
{
$locations = LocationTrails::whereTrailId($id)->with('locations')->orderBy('ordered','ASC')->get();
dd($locations);
// $locations = Trail::findOrFail($id)->locations()->paginate($this->perPage);
// dd($locations);
$tdata = [];
foreach($locations->items() as $location) {
$hints = $location->hints;
$hintsData = [];
foreach($hints as $hint) {
$hintsData[] = [
'title' => $hint->title,
'hint_text' => $hint->hint_text,
'hint_solution_text' => $hint->hint_solution_text,
'hint_image_path' => $hint->hint_image_path,
'hint_video_path' => $hint->hint_video_path,
'complexity_order' => $hint->complexity_order
];
}
$tdata[] = [
'id' => $location->id,
'title' => $location->title,
'radius' => $location->radius,
'latitude' => $location->latitude,
'longitude' => $location->longitude,
'rewards_points' => $location->rewards_points,
'location_info_link' => $location->location_info_link,
'hints' => $hintsData
];
}
$data = [];
$data['data'] = $tdata;
$data['meta']['paginator'] = $this->getPaginatorInfo($locations);
return $data;
}
这是我的位置模型
class Location extends Model
{
protected $table = 'locations';
protected $fillable = [
'title', 'radius', 'latitude', 'longitude', 'rewards_points', 'location_info_link', 'location_order'
];
/********************* RELATIONS *********************/
public function trails()
{
return $this->belongsToMany(Trail::class);
}
public function hints()
{
return $this->hasMany(LocationHint::class);
}
public function location_trails()
{
return $this->belongsTo(LocationTrails::class,'location_id');
}
这是我的 locationtrail 模型:
class LocationTrails extends Model
{
protected $table = 'location_trail';
protected $fillable = [
'location_id', 'trail_id', 'ordered', 'created_at', 'updated_at',
];
/********************* RELATIONS *********************/
public function trails()
{
return $this->belongsToMany(Trail::class,'trail_id');
}
public function locations()
{
return $this->belongsToMany(Location::class,'location_id');
}
解决方案
问题出在您的LocationTrails
模型中。您像这样定义您的方法$this->belongsToMany('App\Role', 'role_user', 'user_id', 'role_id');
,laravel 认为location_id
是一个表名并抛出错误。
如果是一对多的关系。
public function locations()
{
return $this->hasMany(Location::class,'location_id');
}
如果是多对多关系,那么您可以看到这一点。
https://laravel.com/docs/5.8/eloquent-relationships#many-to-many
你的trails()
方法也一样。
public function trails()
{
return $this->hasMany(Trail::class,'trail_id');
}
推荐阅读
- python - 在 sklearn 中将 DataFrameMapper() 用于 PolynomialFeature() 时出错
- c - 调用用户定义的函数后出现“双精度前的预期表达式”错误
- java - java.io.IOException:无法运行程序执行失败的android
- mysql - 如何查询具有相同字段的两个表,仅当字段值相同时才返回id
- nativescript - 在 NativeScript 中关闭 HTTP 请求
- reactjs - 'requireNativeComponent' 不是从 'react-native-web/dist/index 导出的
- android - Android Studio 4.0.1 发布/调试构建类型导致 R8/Proguard 不可行/可行的结果
- python - 通过 for 循环返回函数的值在多次迭代中不起作用
- hibernate - 像 ehcache / redis 这样的外部缓存在哪里适合 wrt hibernate level 1 / level 2 缓存?
- javascript - 从模态问题中获取价值