【发布时间】:2015-07-02 06:38:59
【问题描述】:
我有 2 个表 users_teams 和 events_users
users_teams 拥有所有用户数据(此处为示例)
- uid gid 名称
- 0 0 用户A
- 1 0 用户 B
- 2 0 用户 C
events_users 在用户参加活动时拥有
- 开斋节 uid gid
- 0 0 0
- 0 1 0
- 1 1 1
我正在寻找编写一个 laravel 查询来从 users_teams 中选择具有指定 gid 并且不在 events_users 中具有指定 eid 的任何用户。
所以对于 gid 0 和 eid 0 我应该得到用户 C 的详细信息
我认为反加入会起作用,但总是得到空结果。有人可以帮忙吗?
$result = Users_team::where('users_teams.gid', '=', $gid)
->leftJoin('events_users', function($join) use ($gid, $eid)
{
$join->on('users_teams.uid', '=', 'events_users.uid')
->where('events_users.eid', '=', $eid);
})
->whereNull('events_users.eid')
->get();
【问题讨论】:
-
->whereNull('events_users.uid') 因为在这种情况下不会有'uid'
-
$eid i 事物必须有一个 VALUE(此处为 0 )而不是 NULL,sitepoint.com/understanding-sql-joins-mysql-databaselookpup LEFTJOIN 示例
-
不幸的是同样的结果。
-
不知道您使用的课程。你不能简化查询吗??
-
认为一定是NULL,见Emma在Left Join中的那一行。
标签: php mysql sql laravel join