【问题标题】:Copy column values from multiple table and insert into 3rd table in Laravel从多个表中复制列值并插入到 Laravel 中的第三个表中
【发布时间】:2017-04-19 11:19:24
【问题描述】:

我希望填充 'ShippingOrder' with 'Contains.ISBN', 'Contains.number', 'Stocks.warehouseCode' 并且对于用户名,我从 'Contains.basketID' = 'ShoppingBasket.basketID' 之间的连接中获取它

我有这个在 mysql 中为我工作-

INSERT INTO ShippingOrder (SELECT DISTINCT co.ISBN, s.warehouseCode, sb.username, co.number FROM Contains co INNER JOIN Stocks s INNER JOIN ShoppingBasket sb ON co.ISBN = s.ISBN AND sb.basketID=co.basketID AND co.basketID='".$basketID."' GROUP BY co.ISBN)

TABLE `ShippingOrder` (
  `ISBN` int(11) NOT NULL,
  `warehouseCode` int(11) NOT NULL,
  `username` varchar(50) NOT NULL,
  `number` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

TABLE `Contains` (
  `ISBN` int(11) NOT NULL,
  `basketID` varchar(50) NOT NULL,
  `number` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

TABLE `Stocks` (
  `ISBN` int(11) NOT NULL,
  `warehouseCode` int(11) NOT NULL,
  `number` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

TABLE `ShoppingBasket` (
  `basketID` varchar(50) NOT NULL,
  `username` varchar(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

我不明白如何在 Laravel 5+ 中执行此操作。 我可以运行简单的查询,但我不知道如何运行上面提到的查询。 谢谢Check this image

【问题讨论】:

  • 上面也是一个简单的查询。如果问题是如何用 laravel 对象表达上述查询,那么我的答案是:不要浪费时间在上面,直接运行原始查询即可。
  • 查询在 CodeIgniter 或 PhpMyAdmin 中运行良好。但是,它不是从 Laravel 内部插入的。它是否正确? $result = DB::raw("INSERT INTO shippingorder (SELECT DISTINCT co.ISBN, s.warehouseCode, sb.username, co.number FROM 包含 co INNER JOIN Stocks s INNER JOIN ShoppingBasket sb ON co.ISBN = s.ISBN AND sb.basketID=co.basketID AND co.basketID='1' GROUP BY co.ISBN)");

标签: php mysql database join laravel-5


【解决方案1】:

您可以尝试格式化输出

因此,如果您从第一个查询中返回结果,而不是立即插入 INSERT INTO,您可以

DB::table('ShippingOrder')->insert(
    ['ISBN' => '123', 'warehouseCode' => 1, 'username' => 'bob', 'number' => 4]
);

所以如果你的结果是数组:

DB::table('ShippingOrder')->insert(
    $rows
);

或者直接在原始查询中完成所有操作

DB::raw('INSERT INTO ShippingOrder ...'); // plus rest of query

所以你会跳过一些 Laravel 产品,但仍然有可能。

【讨论】:

  • 查询在 CodeIgniter 或 PhpMyAdmin 中运行良好。但是,它不是从 Laravel 内部插入的。它是否正确? $result = DB::raw("INSERT INTO shippingorder (SELECT DISTINCT co.ISBN, s.warehouseCode, sb.username, co.number FROM 包含 co INNER JOIN Stocks s INNER JOIN ShoppingBasket sb ON co.ISBN = s.ISBN AND sb.basketID=co.basketID AND co.basketID='1' GROUP BY co.ISBN)");
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-21
  • 2018-11-16
  • 1970-01-01
  • 2019-06-14
  • 1970-01-01
相关资源
最近更新 更多