找不到基本表或视图:1146表'pht.location_id'不存在

时间:2019-04-01 10:48:40

标签: laravel

我的数据库中没有使用该名称(location_id)的表,但这给了我错误。

  

“消息”:“ SQLSTATE [42S02]:找不到基本表或视图:1146表   “ pht.location_id”不存在(SQL:选择locations。*,   location_idlocation_trails_id作为pivot_location_trails_id,   location_id中的location_idpivot_location_id作为locations的{​​{1}}   location_id上的内部联接locationsid =   location_idlocation_id,其中location_idlocation_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');
}

1 个答案:

答案 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');
}