使用Laravel 4 Query Builder中的Join进行删除

时间:2014-09-04 03:14:12

标签: laravel laravel-4 query-builder

有没有办法通过查询构建器在Laravel 4上进行内部联接删除?

我有这个示例查询(sample query taken from this source.)

DELETE s.* FROM spawnlist s
INNER JOIN npc n ON s.npc_templateid = n.idTemplate
WHERE (n.type = "monster");

我尝试过类似的事情:

DB::table('spawnlist as s')
        ->join('npc as n', 's.npc_templateid', '=', 'n.idTemplate')
        ->where('n.type', 'monster')
        ->delete();

但似乎连接不能在这里完成?

1 个答案:

答案 0 :(得分:0)

我认为最好的方式是我们laravel的活动,它更容易和干净。 你可以像这样执行相同的任务:

DB::table('spawnlist')->delete();

然后创建一个spawnlist事件捕获删除事件并删除其他表,如下所示:

Spawnlist::deleting( function ($sl) 
{
    DB::table('npc')->delete();
});