Laravel 两表组合查询

Laravel combination query of two tables

我有以下表格:

我想要的是 product_types_values ptv 其中 ptv.type_id == 1 并且不存在任何 变体 v 其中 v.id_type == 1 及其 v.value == ptv.value

在 SQL 中会像这样:

SELECT *
FROM products_types_values ptv
WEHRE ptv.type_id = 1 and ptv.value not in (SELECT v.value
                                            FROM variants v
                                            WEHRE v.type_id = 1)

例如,在图像的表格中,我想要得到的结果是 products_types_values 8, 9, 10, 11, 1213.

在控制器中,我得到了一些变体和 product_types_values,并将它们存储在 $variants 和 $products_types_values 上。也许解决方案是使用这些变量或进行另一个查询。

我的代码是:

$variants = Variant::where('id_product', $id)->orderBy('id', 'Asc')->paginate(10);
$products_types_values = ProductTypeValue::where('type_id', $product->type_id)->orderBy('value', 'Asc')->get();
ProductTypeValue::where('type_id', $product->type_id)
                ->whereNotIn('value', function ($query) use ($product) {
                    $query->select('v.value')
                          ->from('variants', 'v')
                          ->where('v.type_id', $product->type_id);
                })
                ->get();