我的数据库中没有使用该名称(location_id)的表,但这给了我错误。
“消息”:“ SQLSTATE [42S02]:找不到基本表或视图:1146表 “ pht.location_id”不存在(SQL:选择
locations
。*,location_id
。location_trails_id
作为pivot_location_trails_id
,location_id
中的location_id
。pivot_location_id
作为locations
的{{1}}location_id
上的内部联接locations
。id
=location_id
。location_id
,其中location_id
。location_trails_id
在(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');
}
这是我的位置跟踪模型:
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');
}
答案 0 :(得分:1)
问题出在您的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');
}