我需要执行包含子查询的删除操作。它是这样的:
delete from images where exists ( select thumbnail from posts where posts.id = 10 )
如何使用whereExists function执行此操作?我试图通过变量动态传递整数值,但是它抛出一个错误,说明变量没有被定义。 在闭包内没有检测到变量。我可以这样做吗?
注意:查询中的 10 是一个由php传入的值。
答案 0 :(得分:1)
你需要做这样的事情:
$postId = Input::get('postId');
DB::table('posts')
->whereExists(function($query) use ($postId) {
// now you have $query and $postId
$query->select('thumbnail')
->from('posts')
->where('id', '=', $postId);
})->delete();
PS:对同一个表使用EXISTS
似乎很奇怪。你不能简化这样的事情(?):
delete from posts where posts.thumbnail is not null and posts.id = 10