сохранить строку в массив - PullRequest
0 голосов
/ 08 октября 2018

В MySQL у меня есть почтовые индексы имени поля и тип LONGTEXT.Он хранит несколько почтовых индексов через запятую.Как бы мне получить это и сохранить его как массив для другого использования?

Ответы [ 4 ]

0 голосов
/ 08 октября 2018
// the final array all the post codes are collected.
$postCodes = [];

foreach (Model::pluck('postcodes') as $stringCodes)
    foreach (explode(',', $stringCodes) as $postCode) $postCodes[] = $postCode;
0 голосов
/ 08 октября 2018

вы можете использовать метод PHP explode().

, который, по вашему мнению, вы не можете сделать, - это сделать where x = x в базе данных.

В модели:Вы можете установить методы мутатора:

public function getPostcodesAttribute($value) {
    return explode(',',$value);
}

public function setPostcodesAttribute($value) {
    $this->attributes['postcodes'] = implode(',',$value);
}
0 голосов
/ 08 октября 2018

Допустим, у вас есть результат, сохраненный в строке, подобной этой:

$s = "6000,5447"; //$s = $array->postcodes;

вы можете получить каждое значение индекса в массиве, используя это:

$values= explode(",", $s);
echo $values[0]; // 6000

Или даже лучше .. вы можете сохранить его как json и получить как json в формате массива.

0 голосов
/ 08 октября 2018

Сохраните его как поле JSON в MySQL, кодируйте и декодируйте Laravel при извлечении и сохранении их соответственно

в вашей миграции

$table->json('field_name');

, затем вмодель

protected $json = ['field_name'];

тогда, когда вы обращаетесь к полю, laravel преобразует его в массив для вас, вам не нужно вызывать какие-либо явные методы.

Документ - https://laravel.com/docs/5.7/eloquent-mutators#attribute-casting

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