我无法处理join和多对多数据库关系。
我有3张table(结构简化了)
用户:
id (primary) | userEmail | userName | userAddress | userCreated
团队:
id (primary) | teamName | teamLogo | teamCreated
团队用户
id (primary) | userId | teamId | userLevel
团队可以有很多用户。用户可以在许多团队中。usersteams表跟踪哪些用户在哪个团队中(注意:我没有使用外键或任何东西)。
当用户登录时,我想得到他们所属的所有团队的列表以及相应的数据,即。
从用户获取数据(其中id=$id)
在团队用户中查找
通过teams users中的teamid从团队获取团队信息
全部存储在一个数组中
到目前为止,我有这个代码,但老实说,我只是尝试了很多变化:
$model->select('users.*, teams.*, teams.id as teamId, teams-users.id as teamsUsersId, teams-users.userId as teamsUsersUserId, teams-users.teamId as teamsUsersTeamId');
$model->where("users.id", $id);
$model->join('teams-users','teams.id = teams-users.teamId','inner');
$data = $model->get()->getRowArray();
运行上面的查询会产生错误:未知表“myproject.teams”-即使teams表100%存在并且我在整个项目中都使用它。
我哪里出错了?
1条答案
按热度按时间kx1ctssn1#
出现此错误是因为在查询中没有包含from子句,并且缺少join子句。使用codeigniter,您可以这样做:
说明:
缺少表用户的联接
要使用左连接吗
将where子句放在相应的连接中(它变成
and
)您错过了from部分,这可以通过将表名放入get()函数或
$model->from('teams');
也可以看到这个很好的连接解释