使用laravel的eloquent写两个表的关联关系是日常操作,hasOne,hasMany,belongsTo
会遇到有枢纽表(中间表)来做多对多关系用的,hasManyThrough这个方法几个参数比较难记下来
现有三个模型User、City、UserCity,对应表users、cities、user_cities
通过UserCity枢纽表关联User和City关系
现在在User表中写上City的关联关系
class User extends Model { public function cities(): Relation { return $this->hasManyThrough( // 参数1 目标表类名 City::class, // 参数2 枢纽表类名 UserCity::class, // 参数3 枢纽表中和当前表关联的字段名 'user_city.user_id', // 参数4 目标表和枢纽表关联的字段名 'city.id', // 参数5 当前表中和枢纽表关联的字段名 'user.id', // 参数6 枢纽表和目标表关联的字段名 'user_city.city_id'); } }