【发布时间】:2019-04-24 09:14:13
【问题描述】:
只需要这个查询的 Eloquent ORM 格式。。头疼一阵子。
SELECT * FROM players WHERE user_id NOT IN (SELECT player_id FROM team_requests)
【问题讨论】:
标签: php sql laravel orm eloquent
只需要这个查询的 Eloquent ORM 格式。。头疼一阵子。
SELECT * FROM players WHERE user_id NOT IN (SELECT player_id FROM team_requests)
【问题讨论】:
标签: php sql laravel orm eloquent
我肯定会把它分成两部分开始:
$player_ids = TeamRequest::all()->pluck('player_id')->toArray();
然后
Player::whereNotIn('user_id', $player_ids)->get();
应该给你你的分析器。然后,如果您想在一个表达式中使用它,也许可以尝试
Player::whereNotIn('user_id',
TeamRequest::all()->pluck('player_id')->toArray()
)->get();
【讨论】:
假设Player模型有一对多关系teamRequests,那么:
Player::doesntHave('teamRequests')->get();
关系方法可能如下所示:
public function teamRequest() {
return $this->hasMany(TeamRequest::class, 'player_id', 'user_id');
}
【讨论】:
你可以试试这个。 首先,您可以选择所有玩家 ID。
$player_ids = TeamRequest::select('player_id')->get();
然后你就可以找到玩家了
Player::whereNotIn('user_id', $player_ids)->get();
【讨论】: