如何在Laravel中存储关联数组

3

我是 Laravel 的新手,想在数据库中存储这个数组。

以下是我的数组 PHP 代码:

$socialNetwork = array();
$socialNetwork[0]["name"]= "Facebook";
$socialNetwork[0]["account"]= "facebook_account";
$socialNetwork[1]["name"]= "Twitter";
$socialNetwork[1]["account"]= "twitter_account";
$socialNetwork[2]["name"]= "Instagram";
$socialNetwork[2]["account"]= "insta_account";

var_dump() 的输出结果如下:

array(3) {
  [0] => array(2) {
    ["name"] => string(8) "Facebook"
    ["account"] => string(16) "facebook_account"
  }
  [1] => array(2) {
    ["name"] => string(7) "Twitter"
    ["account"] => string(15) "twitter_account"
  }
  [2] => array(2) {
    ["name"] => string(9) "Instagram"
    ["account"] => string(13) "insta_account"
  }
}

我尝试了几个方法,但它无法工作!

请帮忙检查代码。表名为socialAccounts


尝试使用序列化函数将其存储为原样。 - Farouk Mhammad
1个回答

4
在你的数据库中为此字段添加一列;使用JSON或TEXT类型即可完成任务。 接下来,您应该将该列添加到SocialAccount模型的$casts数组中:
protected $casts = [
    'facebook_account' => 'array',
];

现在,每当你检索这个值时,它都会被反序列化。
要存储该值,只需使用json_encode()
$social_account->facebook_account = json_encode($facebookArrayData);
$social_account->save();

您可以在文档中了解有关属性转换的更多信息;https://laravel.com/docs/7.x/eloquent-mutators#attribute-casting

这是一个有帮助的答案。谢谢!我想澄清一件事...这个$facebookArrayData变量是什么?它从哪里来的? - Malith Senanayake

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接