【发布时间】:2014-04-21 23:12:13
【问题描述】:
我有一个users 表
|------------|
| USERS |
|------------|
|id |
|f_name |
|l_name |
|------------|
现在这些用户可以相互关联 - 爸爸、兄弟、姐妹等。
为此,我有一个relations 表
|------------|
| RELATIONS |
|------------|
|id |
|type |
|------------|
现在我如何关联用户?我试过的是:
我创建了一个relation_user 表
|---------------|
| RELATION_USER |
|---------------|
|id |
|user_id |
|user2_id |
|relation_id |
|---------------|
型号:
Relation.php
public function user()
{
return $this->belongsToMany('User');
}
User.php
public function relations()
{
return $this->belongsToMany('Relation');
}
我尝试像这样抓住关系:
$u = User::find('11');
var_dump($u->relations->toArray());
这是我得到的:
array(1) {
[0]=>
array(5) {
["id"]=>
string(1) "1"
["relation"]=>
string(12) "Grand Father"
["pivot"]=>
array(2) {
["user_id"]=>
string(2) "11"
["relation_id"]=>
string(1) "1"
}
}
}
请注意,它缺少数据透视表 (relation_user) 中的 user2_id。我怎样才能获得第三场。这也是正确的数据库设计吗?谢谢。
我知道我可以执行以下代码。只想知道最佳实践/更好的方法。可能是可以利用eager loading 并返回Laravel collection 的东西?
$a = DB::table('relation_user')->where('user2_id', '=', '1')->get(array('user_id', 'user2_id', 'relation_id'));
【问题讨论】:
-
您能否详细说明您是如何编写模型类的?
-
@har2vey 请检查更新后的问题
标签: database database-design laravel-4