【发布时间】:2019-07-10 21:34:47
【问题描述】:
我需要将数据从 Mysq 表 (Paniers) 传输到另一个 Mysql 表 (Commandes) 并在传输后从第一个表中删除数据。
这是我的代码:
function Commande(Request $request) {
$pn = $request->input('id');
$pdr = Panier::find($pn);
$user = Commande::create([
'ID_User' => $pdr->ID_User,
'ID_Piece' => $pdr->ID_Piece,
'QTE' => $pdr->QTE,
]);
if($user){
if($pdr->delete())
{
echo 'Commande Confirmée';
}
}
}
我收到此错误:
"Property [ID_User] does not exist on this collection instance."
如果我这样做,它会起作用,但不是获取所有数据,而是我只得到第一行。我需要获取所有数据行!
$pdr = Panier::find($pn)->first();
【问题讨论】:
-
Mysq table to another Mysql table目标表是空的吗?在这种情况下,您可以只使用rename表...例如,我有一个非常复杂的数据库,但它每天只更新一次,所以在晚上我构建了一个聚合表,对所有数据进行反规范化以进行查询更快更容易。我们还有一个主数据库,在白天进行编辑,但不发布。这是通过每晚的 cron 作业完成(发布)的(当我处理数百万行数据时),所以我构建了一个名为tmp_table的表,然后当它完成后,我会覆盖前一天的表。 -
你用的是哪个版本的 laravel?
-
这相当于减少停机时间,因为昨天存在的表告诉它已用新数据重命名。而不是处理 25+ 个相关表,我只能使用 2 个。因此,如果您只想用新表清除旧表,您可以执行简单的
RENAME old_table TO new_table类型查询(抱歉,这个例子太长了) -
@ArtisticPhoenix 在我的情况下它必须是数据传输,@ Mohammad Zare Moghadam 我正在使用 laravel 5。
-
就我个人而言,我会在 PURE SQL 中执行此操作,处理大量数据并不是大多数 ORM 所擅长的。 (PS 我不使用 Laravel)但是我使用过 Symphony 和 Doctrine(畏缩,我对 Doctrine 没有印象)......当他们开始轰炸我的数百万行表时,我放弃了 ORM。我有一张包含 1.7 亿行的表,我将其移至 MongoDB(对其糟糕的计数能力没有留下深刻印象)等......大数据问题。
标签: php mysql laravel laravel-5 laravel-4