gpt4 book ai didi

mysql - Laravel 中不存在的地方

转载 作者:行者123 更新时间:2023-11-30 21:43:04 24 4
gpt4 key购买 nike

谁能告诉我在我的 laravel 查询中可能有什么错误,基本上我想要的是列出一个表的记录,该表的 id 在另一个表中不相关。我在 Mysql 中使用以下查询完成了此操作:SELECT * FROM item WHERE NOT EXISTS (SELECT null FROM qualifications WHERE grades.item_id = item.id AND qualifications.user_id = 2);

但现在我需要在 laravel 中做同样的查询,我试过这样: codigo

我得到的是这个我不知道如何解决的语法错误: error

我非常感谢任何能告诉我我做错了什么,或者我在 Laravel 中以什么形式进行查询的人。

最佳答案

您也可以将您的查询重写为 left join like

SELECT i.*
FROM item i
LEFT JOIN qualifications q ON q.item_id = i.id AND q.user_id = 2
WHERE q.item_id IS NULL

在查询生成器中,您可以将其写为

DB::table('item as i')
->select('i.*')
->leftJoin('qualifications as q', function ($join) use($user_id) {
$join->on('q.item_id', '=', 'i.id')
->on('q.user_id', '=', $user_id);
})
->whereNull('q.item_id')
->get();

我建议您采用的另一种方法是设置您的关系和模型,并以 Eloquent 方式进行

class Item extends Model
{
public function qualifications()
{
return $this->hasMany(\App\Models\Qualification::class, 'item_id');
}
}

class Qualification extends Model
{
public function qualifications()
{
return $this->belongsTo(Item::class, 'item_id');
}
}

然后你可以使用Querying Relationship Absence

Item::whereDoesntHave('qualifications', function ($query) use($user_id) {
$query->where('user_id', '=', $user_id);
})->get();

关于mysql - Laravel 中不存在的地方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50711923/

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