- has語句執行的sql
SELECT
*
FROM
`gs_store_corner_marks`
WHERE
EXISTS (
SELECT
*
FROM
`gs_store_goods`
INNER JOIN `gs_store_goods_corner_marks` ON `gs_store_goods`.`id` = `gs_store_goods_corner_marks`.`goods_id`
WHERE
`gs_store_corner_marks`.`id` = `gs_store_goods_corner_marks`.`corner_mark_id`
AND `gs_store_goods`.`deleted_at` IS NULL
)
AND `store_id` = 1000106
ORDER BY
`gs_store_corner_marks`.`id` DESC
- whereHas語句執行的sql
SELECT
*
FROM
`gs_store_corner_marks`
WHERE
EXISTS (
SELECT
*
FROM
`gs_store_goods`
INNER JOIN `gs_store_goods_corner_marks` ON `gs_store_goods`.`id` = `gs_store_goods_corner_marks`.`goods_id`
WHERE
`gs_store_corner_marks`.`id` = `gs_store_goods_corner_marks`.`corner_mark_id`
AND `validity_type` = 2
AND `gs_store_goods`.`deleted_at` IS NULL
)
AND `store_id` = 1000106
ORDER BY
`gs_store_corner_marks`.`id` DESC
- with執行的sql
SELECT
*
FROM
`gs_store_corner_marks`
WHERE
`store_id` = 1000106
ORDER BY
`gs_store_corner_marks`.`id` DESC
SELECT
`gs_store_goods`.*, `gs_store_goods_corner_marks`.`corner_mark_id` AS `pivot_corner_mark_id`,
`gs_store_goods_corner_marks`.`goods_id` AS `pivot_goods_id`
FROM
`gs_store_goods`
INNER JOIN `gs_store_goods_corner_marks` ON `gs_store_goods`.`id` = `gs_store_goods_corner_marks`.`goods_id`
WHERE
`gs_store_goods_corner_marks`.`corner_mark_id` IN (34, 39, 40, 41, 42, 48, 49, 50, 54)
AND `gs_store_goods`.`deleted_at` IS NULL
他們的示例:
$goods_lists = $this->cornerMark
->where(['validity_type'=>2])
->where('id', '<>', $param['id'])
->with('goods')
->whereHas('goods', function ($query) {
return $query->where('store_goods.store_id', $this->storeId);
})
->get()->toArray();