我在我的项目中使用Laravel4,我在Mysql数据库上有这些表..
Users :
- id - username
1 - user1
2 - user2
-
Blogs :
- id - blog_name
1 - blog1
2 - blog2
-
Roles :
- id - role_name
1- owner
2- editor
-
Assigned_roles:
- id - role_id - user_id - blog_id
1 - 1 - 1 - 1 // user1 owns blog1
2 - 2 - 1 - 2 // user1 editor in blog2
在laravel中,我可以使用hasMany和BelognsToMany关系成功处理三个表..但是有4个表!对我来说太过苛刻,
我花了2天的时间,但我无法用一个查询左右的方式想出如何以简单的方式实现这一目标。
我想要做的是,当我登录blog1时,我需要列出我可以访问的所有博客,例如:
类似......
$user = User::find(1);
print_r($user->access_blogs); // list blogs that I have assigned roles to them
也许更晚......
$myrole = Blog::find(1)->where('user_id', 2);
echo $myrole->myrole; // editor
-
// 1
use LaravelBook\Ardent\Ardent;
class User extends Ardent {
public function blogs()
{
return $this->hasMany('Blog');
}
}
// 2
use LaravelBook\Ardent\Ardent;
class Assignedroles extends Ardent {
protected $table = 'assigned_roles';
}
..等等,你明白了...... :)