我想知道如何在表之间建立关系:
我有一张shops
表和一张users
表
我想关联到users
表:商店(id)和区域(这是一组商店)。
我不知道如何以一种美丽而正确的方式做到这一点。
例如,我们可以通过非常复杂的方式:
区域A包含[区域B(3个商店)和区域C(1个商店)]和1个商店:共5个商店。
John是A区,X区和其他3家商店(没有区域)的合作伙伴。
如何在数据库中表示? 它就像一个递归的东西:(
先谢谢!
答案 0 :(得分:0)
您可能希望拥有以下表格:
users
- id
- username
shops
- id
- name
areas
- id
- name
- parent_id
user_shop
- user_id
- shop_id
area_shop
- shop_id
- area_id
然后,对于您的示例,行可能看起来像
users
id: 1
username: jappleseed
shops
id: 1
name: some shop name
id: 2
name: some other shop name
areas
id: 1
name: Area A
parent_id: null
id: 2
name: Area B
parent_id: 1
id: 3
name: Area C
parent_id: 1
area_shop
area_id: 2
shop_id: 1
area_id: 2
shop_id: 2
然后你可以定义你的嵌套区域的关系,如:
class Area extends Model {
/**
* Parent Area
*/
public function parent_area()
{
return $this->belongsTo('Area', 'parent_id');
}
/**
* Child Areas
*/
public function child_areas()
{
return $this->hasMany('Area', 'parent_id', 'id');
}
}
其他关系应该相当直接。
这是未经测试的,可能需要稍微调整一下,但总体思路应该让你在那里。否则,使用预构建的嵌套集库也可以。