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, 12 和 13.
在控制器中,我得到了一些变体和 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();
我有以下表格:
我想要的是 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, 12 和 13.
在控制器中,我得到了一些变体和 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();