复杂的插入查询使用INSERT INTO并在子查询中Laravel

问题描述 投票:0回答:1

我试图找出实现代码使用Query BuilderEloquent的最佳方式。

在其最简单的形式,它应该如已在qazxsw点表项防止新的买入请求的插件。我还没有发现比运行一个完整的原始查询以外的任何有用的参考。

transactions
mysql laravel-5 laravel-eloquent insert-into laravel-query-builder
1个回答
0
投票

在Laravel,您可以使用INSERT INTO `transactions` (`user_id`, `item_id`, `type`, `created_at`, `updated_at`) SELECT 1, 186808, 'bought', NOW(), NOW() WHERE ( SELECT SUM( CASE WHEN `type` = 'bought' THEN 1 WHEN `type` = 'sold' THEN -1 END ) FROM `transactions` WHERE (`item_id`, `user_id`) = (186808, 1) GROUP BY `item_id` ) = 0 来实现这一目标。

DB::raw(<your_complex_query_here>)

如需更多信息,请参考这里Laravel文档DB::raw("INSERT INTO `transactions` (`user_id`, `item_id`, `type`, `created_at`, `updated_at`) SELECT 1, 186808, 'bought', NOW(), NOW() WHERE ( SELECT SUM( CASE WHEN `type` = 'bought' THEN 1 WHEN `type` = 'sold' THEN -1 END ) FROM `transactions` WHERE (`item_id`, `user_id`) = (186808, 1) GROUP BY `item_id` ) = 0");

© www.soinside.com 2019 - 2024. All rights reserved.