从Laravel中的数据库获取ID

ibps3vxo  于 2022-11-26  发布在  其他
关注(0)|答案(4)|浏览(265)

我可以不使用foreach来简化这段代码吗?

$userQuestIds = [2,4,45,586,16,2,143,234,654,78,56];

$typeQuests = [];
foreach ($userQuestIds as $qId) {
    $typeQuests[] = Quest::where(['id' => $qId])->first();
}
eufgjt7s

eufgjt7s1#

如果id是一个主键,最短的方法是:

$typeQuests = Quest::find($userQuestIds);
vaqhlq81

vaqhlq812#

您可以使用whereIn

$typeQuests = Quest::whereIn('id', $userQuestIds)->get();

注意:这种方法对于id以外的列(作为主列)更好。我认为@andriy-Lozynskiy解决方案是最好的方法。

cxfofazt

cxfofazt3#

可以对QueryBuilder类使用whereIn()方法

$userQuestIds = [2,4,45,586,16,2,143,234,654,78,56];
$typeQuests = Quest::whereIn('id', $userQuestIds)->get();
flmtquvp

flmtquvp4#

如果你有一个名为'userQuests'的Quest -〉UserQuest关系,并且有一个表'user_quests',你可以这样得到它们:

$typeQuests = Quest::whereHas('userQuests', function (Builder $query) {
    $query->where('user_quests.status_id', 1);
})->get();

编辑:自从我开始回答你的问题以来,你已经简化了你的问题,只要记住你也有这个选择。

相关问题