Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将另一个表数据插入另一个表laravel 5.2?_Php_Mysql_Laravel_Laravel 5.2 - Fatal编程技术网

Php 如何将另一个表数据插入另一个表laravel 5.2?

Php 如何将另一个表数据插入另一个表laravel 5.2?,php,mysql,laravel,laravel-5.2,Php,Mysql,Laravel,Laravel 5.2,我有两张桌子: qr\U明细表: id product_id qrcode_id created_at updated_at 1 1 12 2017-10-09 15:36:15 2017-10-09 15:36:15 2 3 13 2017-10-09 15:36:15 2017-10-09 15:36:15 id produc

我有两张桌子:

qr\U明细表:

id     product_id    qrcode_id     created_at           updated_at
1      1             12            2017-10-09 15:36:15  2017-10-09 15:36:15
2      3             13            2017-10-09 15:36:15  2017-10-09 15:36:15
id     product_id    qrcode_id     winner_name  win_number  created_at           updated_at
1      1             12            hello        5           2017-10-09 15:36:15  2017-10-09 15:36:15
2      3             13            world        6           2017-10-09 15:36:15  2017-10-09 15:36:15
获奖者表:

id     product_id    qrcode_id     created_at           updated_at
1      1             12            2017-10-09 15:36:15  2017-10-09 15:36:15
2      3             13            2017-10-09 15:36:15  2017-10-09 15:36:15
id     product_id    qrcode_id     winner_name  win_number  created_at           updated_at
1      1             12            hello        5           2017-10-09 15:36:15  2017-10-09 15:36:15
2      3             13            world        6           2017-10-09 15:36:15  2017-10-09 15:36:15

现在我想将
qr\u详细信息
表格
product\u id
&
qr\u id
放入
winners
表格。如何在Laravel中使用查询来实现这一点?我已经做了一个SQL小提琴提前谢谢。

我不太理解你的问题,但你可以试试这个:

$datas = DB::table('qr_details ')->get();

foreach($datas as $data){
    DB::table('winners')->insert(['qrcode_id' => $data->qrcode_id, 'product_id'=>$data->product_id, ...bunch other inserts])
}

如果要向
winners
表中添加新记录,则可以使用
elount
模型和
insert
方法在单个查询中添加多条记录

$qcodes = Qrcode::all()->map(function(Qrcode $qrcode) {
    return [
        'id' => $qrcode->id,
        'product_id' => $qrcode->product_id,
        'qrcode_id' => $qrcode->qrcode_id,
        'winner_name' => 'some name',
        'win_number' => 5
    ];
});

Winner::insert($qcodes);
然而,从你所说的猜测来看,这可能不是你想要的——因为你只想添加
product\u id
qrcode\u id
——换句话说,就是更新现有记录

如果是这种情况,并且如果您的
id
列在两个表中都匹配,那么您可以执行类似的操作:

$qcodes = Qrcode::all();

$qcodes->each(function(Qrcode $qrcode) {
    Winner::where('id', $qrcode->id)->update([
        'product_id' => $qrcode->product_id,
        'qrcode_id' => $qrcode->qrcode_id
    ]);
});
这再次假设您使用的是
雄辩的
模型,否则您必须使用
查询生成器

$qcodes= DB::table('qr_details')->get();

$qcodes->each(function(Qrcode $qrcode) {
    DB::table('winners')
        ->where('id', $qrcode->id)
        ->update([
            'product_id' => $qrcode->product_id,
            'qrcode_id' => $qrcode->qrcode_id
        ]);
});
确保相应地更新表/模型名称


现在,sql结构的一个问题是,您的
winners
product\u id
qrcode\u id
NOT NULL
,因此在第一次创建记录时,它必须在表中包含一些数据。如果您要更新这些记录,我建议将这两列更改为
NULL
,以便最初不需要任何数据。

我相信您可以这样做:

$query = \DB::connection()->getPdo()->query("select * from qr_details");
$data = $query->fetchAll(\PDO::FETCH_ASSOC);

\DB::table('winners')->insert($data);

这将花费一点时间,只需两次查询

只需使用简单的get查询获取
qr\u details
表的详细信息,然后使用它进行插入!如果有人插入数据赢家表,那么我想将
qr\u详细信息
product\u id
&
qrcode\u id
放入
winners
表中。您的回答出现错误
未定义属性:stdClass::$product\u id