gpt4 book ai didi

mysql - 如何将这些分解后的数据移动到另一个表中?拉维尔 5.3

转载 作者:太空宇宙 更新时间:2023-11-03 11:42:35 24 4
gpt4 key购买 nike

我目前正在进行数据库重构,将数据移至数据透视表并创建适当的关系。这是一个旧数据库,所以有一些有趣的存储选择......像这样:

enter image description here

是的,这很有趣。无论如何,我对 Laravel 如何处理它的对象和数组仍然有些犹豫,这对我来说仍然很疯狂。所以我在这里有这个查询,它是一半:

public function move() {

$prefs = DB::table('users')->select('id', 'Preferences')->where('Preferences', '!=', '')->get();

foreach ($prefs as $pref) {
$tags = $pref->Preferences;
$tag = explode(',', $tags);
print_r('$tag');
}

[解决了小问题]现在 print_r 只打印 $tag$tag$tag$tag。我知道这与我搞乱了我对 laravel 如何使用数组的理解有关。那么我该如何正确地做到这一点呢?

我的目标是遍历每个用户,获取他们的标签,展开这些标签,然后将它们打印到 user_id 旁边的数据透视表 (tag_user)。

注意:标签包含在首选项列中,如上图所示。

编辑:

存储标签的表看起来像这样:

id | tag_id | user_id

由于还有很多重构工作要做​​,接下来我必须弄清楚如何处理链接。

最佳答案

您需要在控制台 php artisan make:model Tag 中为 user_tag 表制作模型。在模型中:

    class Tag extends Model
{
protected $table = 'tag_user'; //this is name of table in your DB
protected $fillable = ['user_id','tag_id']; //this for mass assingment
...
...
...
}

然后,插入新行:

public function move() {

$prefs = DB::table('users')->select('id', 'Preferences')->where('Preferences', '!=', '')->get();

foreach ($prefs as $pref) {
$tags = $pref->Preferences;
$tag = explode(',', $tags);
foreach ($tag as $t) {
$taguser = new Tag(array(
'user_id' => $pref->id,
'tag_id' => $t
));
$taguser->save(); //save in table
}
}
}

关于mysql - 如何将这些分解后的数据移动到另一个表中?拉维尔 5.3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40758317/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com