如何在找到值时立即从执行堆栈返回

  • 本文关键字:执行 堆栈 返回 laravel
  • 更新时间 :
  • 英文 :


我有搜索功能。如果用户想要查找其他人的线程,它会以布尔值TRUE的形式出现。

我可以在它的执行堆栈中添加($threads),但它似乎与执行堆栈的其余部分一起完成。

例如:

public function scopeSearch(Builder $query, ?string $search = null, ?array $users = null, ?bool $title = null, ?bool $threads = null)
{
if ($threads == TRUE) {
return $query->whereHas('thread', function ($query) use ($users) { return $query->whereIn('threads.user_id', $users)->toSql(); });
}

elseif (!$search) {
return $query->when($users, function ($q) use ($users) { $q->whereIn('user_id', $users)
->whereHas('thread', function ($query) use ($users) { $query->whereIn('threads.user_id', $users); })
->orWhereHas('reply', function ($query) use ($users) { $query->whereIn('replies.user_id', $users); })
->orWhereHas('product', function ($query) use ($users) { $query->whereIn('products.user_id', $users); })
->orWhereHas('review', function ($query) use ($users) { $query->whereIn('reviews.user_id', $users); })
;
});
}
}

我可以添加($threads),但是我想知道如何在那里停止它,因为它不返回toSql语句,而且,我希望它只返回线程。

任何帮助都是感激的:)谢谢大家:)。

在我的控制器方法中:

if ($threads) {
}
if (!empty($variable) {
}

应该是"配对在一起"的。像

if ($threads) {
} elseif (!empty($variable)) {
} elseif (etc, etc) {
}

最新更新