【发布时间】:2016-09-10 02:19:49
【问题描述】:
我正在尝试学习 laravel,目前正在使用 eloquent 与数据库进行交互。我被困在如何使用 eloquent 来加入 eloquent。
我有两个表之间的多对多关系:用户和项目,我使用 sharedProject 表作为中间表。
表格是这样的
用户:
| iduser | name | password |
----------------------------------------
| 1 | somename | hashPassword |
| 2 | somename2 | hashPassword |
| 3 | somename3 | hashPassword |
| 4 | somename4 | hashPassword |
----------------------------------------
项目:
| pid | projectname
-------------------
| 1 | somename
| 2 | somename
共享项目:
| pid | iduser | sharedProjectid |
----------------------------------
| 1 | 1 | 1 |
| 1 | 2 | 2 |
现在我想获取所有不共享给定项目的用户,例如在上述情况下,对于 id 为 1 的项目,我应该获取用户 3 和用户 4。
这是我在用户模型中的关系
/**
* User can have many projects
*
* @var array
*/
public function projects(){
return $this->hasMany('App\Project','pid','iduser'); // hasmany(model,foreignkey,localkey)
}
/**
* The user can have many shared projects
*/
public function sharedProjects()
{
return $this->belongsToMany('App\SharedProject', 'sharedProjects', 'iduser', 'pid');// belongsToMany('intermediate tablename','id1','id2')
}
在项目模型中:
/**
* The project can be shared by many users
*/
public function sharedProjects()
{
return $this->belongsToMany('App\SharedProject', 'sharedProjects', 'pid', 'iduser');// belongsToMany('intermediate tablename','id1','id2')
}
/**
* a project belongs to a single user
*
* @var array
*/
public function user()
{
return $this->belongsTo('App\User');
}
我更喜欢一种雄辩的方式来做到这一点,但如果不能以雄辩的方式完成,我也希望看到另一种方法,我也会欣赏一个普通的 mysql 查询。
谢谢
【问题讨论】:
-
很高兴有你的表格数据,但你的代码呢?
-
你是说我的模特? ,我需要在模型名称旁边显示其他内容吗?
-
或者我应该显示架构生成器吗?
-
您为尝试实现目标而编写的代码。我们很乐意帮助您修复代码,但不是为您编写代码。
标签: php mysql laravel laravel-5 eloquent