Post::whereReplyTo($request->input('reply_to'))
->orderBy('updated_at', 'desc')
->offset(Config::PAGE_SIZE * Config::MAX_PAGES)
->take(1024)
->delete();
我打算在帖子数达到4时解雇,以便在这种情况下保持最多4个帖子。
问题是它删除了所有帖子,而不仅仅是那些我打算删除的帖子
我变得沮丧,为什么会这样?没有错误,我toSql'd查询没有错,选择部分是正确的,我尝试了,所以为什么删除所有帖子???
答案 0 :(得分:1)
好吧,如果您的研究是正确的,您仍然可以通过两个步骤来完成:
$delete_posts = Post::select('id')->whereReplyTo($request->input('reply_to'))
->orderBy('updated_at', 'desc')
->offset(Config::PAGE_SIZE * Config::MAX_PAGES)
->take(1024)
->get()->toArray();
Post::whereIn('id', $delete_posts)->delete();
答案 1 :(得分:0)
我想我正在做点什么 我在运行删除后附加了一个监听器来记录最后一个查询 结果是:
delete from `a2_posts` where `reply_to` = ? order by `updated_at` desc limit 1024
那么我的抵消在哪里?我google了,我认为你不能使用偏移+删除。
延迟?是的,非常如此。
这就是我更喜欢Mongo的原因。
更有意义。
来源:Mysql delete statement with limit
所以我认为我要做的就是查询,然后迭代,然后删除。
SQL是纯粹的天才,有时我向上帝发誓。