Laravel Eloquent-使用数据透视表的ID作为另一个表中的外键

托尼克

我需要将数据透视表的ID用作另一个表中的外键。

例如,我有以下表格:

users: id, username, ...

places: id, placename, lat, lng, ...

place_user: id, user_id, place_id

routes: place_user_id, lat, lng, inserted_at.

因此,当用户说我要去那个地方时,我在place_user表中有一个新条目,并开始记录他到达那里的路线。因此,对于每个place_user条目,我在路由表中都有很多条目。

用雄辩的方式建立这种关系的正确方法是什么?我应该为数据透视表创建模型吗?

我试图通过以下解决方案解决我的问题,但没有运气:https : //github.com/laravel/framework/issues/2093#issuecomment-39154456并在此处发表评论https://github.com/laravel/framework / issues / 2093#issuecomment-58187802

任何建议将不胜感激。

托尼克

经过大量搜索并尝试了不同的解决方案,我提出了以下解决方案:

用户模型:

class User extends \Eloquent {
    public function places() {
        return $this->hasMany('PlaceUser')->with('Place');
    }
}

放置模型:

class Place extends \Eloquent {
    public function users() {
        return $this->hasMany('PlaceUser')->with('User');
    }
}

PlaceUser模型:

class PlaceUser extends \Eloquent {

    public function user() {
        return $this->belongsTo('User');
    }

    public function place() {
        return $this->belongsTo('Place');
    }

    public function footprints() {
        return $this->hasMany('Footprint');
    }
}

我将名称路由更改为足迹,以避免laravel中包含的路由类出现问题。

足迹模型:

class Footprint extends \Eloquent {
    public function place_user()
    {
        return $this->belongsTo('PlaceUser');
    }
}

最后,我得到了可以进行不同查询的结构,例如:

// gets all places with corresponding pivot table entries and users table entries    
Place::with('users')->get(); 
// get user with id=1 including corresponding pivot table entries and places table entries
User::with('places')->find(1); 
// get footprint of the user
$user->places->get(0)->footprints 

希望这可以帮助

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Laravel Eloquent的数据透视表,其中有一个表的2个外键和另一个表的1个外键

Laravel Eloquent:在Eloquent中获取联接表的ID字段

如何使用多个外键查询数据透视表Laravel 5 Eloquent

Laravel Eloquent从多个表中检索数据

如何在Laravel 5中使用Eloquent更新数据透视表

Laravel / Eloquent:数据透视表上的条件

Laravel Eloquent-查询数据透视表

使用外键laravel从另一个表中获取数据

我如何在控制器内部的Laravel中的另一个表中获取自动递增的id的值作为外键

Laravel Eloquent 4表关系

Laravel中从一个表到另一个表中相同字段的多个外键

如何设置外键在另一个表中抢行?Laravel 8调试

Laravel Eloquent-获取属于另一个表的表的条目

Laravel Eloquent 获取与数据透视表中的值匹配的关系

Laravel Eloquent:通过具有多个关系的枢轴将表绑定到另一个表

Laravel Eloquent 和 Mysql 加入一个表,如果另一个加入为空

使用多对多关系Laravel / Eloquent / Query builder时如何从另一个表中获取所有书籍

Laravel 3 表 Eloquent:关系

Laravel Eloquent 连接表关系

Laravel Eloquent - 数据透视表

使用 orWhereHas laravel eloquent 查询检查另一个表中是否存在数据

如何在另一个表上使用 Laravel Eloquent whereIn 函数?

Laravel Eloquent Join 使用另一个表

如何使用 Eloquent 在 Laravel 中的另一个表中搜索?

如何获取落在日期之间的行并将其子行放到另一个表中 - Laravel Eloquent

laravel eloquent hasOneThrough 外键

如何在 Laravel eloquent 中查询数据透视表的计数

在 Laravel 中获取具有另一个 Eloquent 查询 ID 的所有项目

使用 laravel 和 eloquent 获取特定表中的数据并将它们插入到另一个表中