gpt4 book ai didi

sql - 如何在 laravel Eloquent 查询构建器中实现 "where not"

转载 作者:行者123 更新时间:2023-12-05 01:40:51 28 4
gpt4 key购买 nike

此 mysql sql 片段的 laravel 等效 Eloquent 查询构建器是什么:

select * from `posts` left join `user_post_interactions` on `posts`.`id` = `user_post_interactions`.`post_id` where `posts`.`user_id` = 10 and not (`user_post_interactions`.`interaction_name` = 'hide' and `user_post_interactions`.`user_id` = 10)

我正在做的是:

$this->posts()->leftJoin('user_post_interactions', 'posts.id', '=', 'user_post_interactions.post_id')
->where(function($q) {
$q->where('user_post_interactions.interaction_name', '<>', 'hide')
->where('user_post_interactions.user_id', '<>', 10);
});

但这并没有产生我预期的结果

最佳答案

您可以使用 whereHas()这将仅查询具有 interactionuser_id 不等于 10 的帖子:

$this->posts()->whereHas('interactions', function ($query) {
$query->where('user_id', '!=', 10);
})->get();

请注意,这将需要一个 Interaction 模型,该模型在 Post 模型上具有 interactions() 关系。

如果您想在查询中包含 interactions,请将 ->with('interactions') 添加到查询链中。

关于sql - 如何在 laravel Eloquent 查询构建器中实现 "where not",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55703573/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com