Laravel删除子查询

时间:2014-10-21 19:56:42

标签: php laravel laravel-4

我需要执行包含子查询的删除操作。它是这样的:

delete from images where exists ( select thumbnail from posts where posts.id = 10 )

如何使用whereExists function执行此操作?我试图通过变量动态传递整数值,但是它抛出一个错误,说明变量没有被定义。 在闭包内没有检测到变量。我可以这样做吗?

注意:查询中的 10 是一个由php传入的值。

1 个答案:

答案 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