【问题标题】:Delete with Join in Laravel 4 Query Builder在 Laravel 4 查询生成器中使用 Join 删除
【发布时间】:2014-10-28 16:28:25
【问题描述】:

有没有办法通过查询构建器在 Laravel 4 上使用 Inner Join 进行删除?

我有这个示例查询(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();

但是这里好像不能加入?

【问题讨论】:

    标签: laravel laravel-4 query-builder


    【解决方案1】:

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

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

    然后创建一个 spawnlist 事件捕获删除事件并像这样删除另一个表:

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

    【讨论】:

    • where子句怎么样?
    • 您仍然可以像这样在删除方法之前添加它... DB::table('spawnlist')->where('table.field', 'table.field')->delete ();
    • 这不会导致 DB 门面向数据库查询和提交两次吗?
    猜你喜欢
    • 2013-06-28
    • 2014-05-08
    • 2018-10-23
    • 1970-01-01
    • 1970-01-01
    • 2021-01-10
    • 2021-11-19
    • 2014-03-13
    • 2013-03-11
    相关资源
    最近更新 更多