Как хранить ассоциативный массив в Laravel - PullRequest
0 голосов
/ 20 апреля 2020

Я новичок в 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";

The 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"
  }
}

Я пробовал несколько вещей, но не могу заставить его работать!

Пожалуйста, помогите с кодом. Имя таблицы социальные учетные записи

1 Ответ

1 голос
/ 20 апреля 2020

Добавить столбец в вашей базе данных для этого поля; JSON или тип TEXT выполнят эту работу.

Затем вы должны добавить столбец к массиву $casts в вашей SocialAccount модели:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...