我无法理解JOIN和多对多数据库关系。
我有3个表(结构已简化)
USERS:
id (primary) | userEmail | userName | userAddress | userCreated
TEAMS:
id (primary) | teamName | teamLogo | teamCreated
TEAMS-USERS
id (primary) | userId | teamId | userLevel
团队可以有许多用户。用户可以在许多团队中。 UsersTeams表跟踪哪些用户属于哪个团队(请注意:我没有使用外键或任何东西)。
[当用户登录时,我想获得他们所属的所有团队的列表以及相应的数据,即
到目前为止,我已经有了这段代码,但老实说,我只是在尝试很多变化:
$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%存在并且我在整个项目中都使用它。
我要去哪里错了?
您会收到此错误,因为在您的查询中没有包括from子句。使用codeigniter,您可以像这样:
$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('teams')->getRowArray();
或替代地
$model->select('users.*, teams.*, teams.id as teamId, teams-users.id as teamsUsersId, teams-users.userId as teamsUsersUserId, teams-users.teamId as teamsUsersTeamId');
$model->from("teams");
$model->where("users.id", $id);
$model->join('teams-users','teams.id = teams-users.teamId','inner');
$data = $model->get()->getRowArray();