我要在以下情况下使用Laravel创建CRUD应用程序: 我们有一个矿山,各种各样的卡车从矿井中提取采矿材料,然后通过一条道路将其存放在一个垃圾场中。现在,每条道路都将一个区域与一个排泄孔相连。因此,“ 1号道路”从“ 1区”取料并放入“排料孔1”中。 2号道路也从“区域1”获取物料,也可能将其处理到“排料孔1”。因此,区域和道路具有一对多的关系,就像一个区域可以有许多条道路和垃圾坑一样,道路也应该具有一对多的关系,就像一个垃圾坑从许多道路上获取材料一样。
理所当然地认为区域,道路和垃圾坑是三个不同的表,是否完全有必要如上所述在这三个表之间建立关系?如果是的话,我想知道这是否会在道路表中创建重复的值,以防用户想要查看道路放置物料的垃圾场或道路所在的区域。例如,考虑下表:
+----+-------------+----------+-------+---------+---------------+
| id | route | distance | slope | area | dumpsite |
+----+-------------+----------+-------+---------+---------------+
| 2 | First route | 10000 | 20 | E12 | Big Dumpsite |
| 3 | Second route| 2000 | 15 | E12 | Huge Dumpsite |
| 4 | Third route | 2555 | 10 | E13 | Big Dumpsite |
+----+-------------+----------+-------+---------+---------------+
您可以在area和dumpsite列中看到重复的值。
这个设计好吗?
答案 0 :(得分:0)
据我了解,您将像这样设置模型
class Area extends Model
{
public function roads() {
return $this->hasMany('App\Road');
}
// to access areas possible dumpsites
public function getDumpsitesAttribute()
{
return $this->roads->with('dumpsite')->get()->pluck('dumpsite')->unique();
}
}
class Road extends Model
{
public function area() {
return $this->belongsTo('App\Area');
}
public function dumpsite() {
return $this->belongsTo('App\Dumpsite');
}
}
class Dumpsite extends Model
{
public function roads() {
return $this->hasMany('App\Road');
}
// to access dumpsites possible area
public function getAreasAttribute()
{
return $this->roads->with('area')->get()->pluck('area')->unique();
}
}
您的road
表将包含area_id
和dumpsite_id