Как преобразовать массив в строку в Laravel? - PullRequest
4 голосов
/ 24 апреля 2019

Я получаю данные из значений флажков в массиве, используя форму начальной загрузки. Я использую массив для хранения значений флажков. Как я преобразую этот массив в строку. Поскольку база данных принимает только строковые значения.

Вот мой код

<div class="form-group col-md-12">
    <div class="custom-control custom-checkbox custom-control-inline">
        <input type="checkbox" id="eduPrimary" name="education[]" 
        class="custom-control-input" value="primary" />
        <label class="custom-control-label" for="eduPrimary">primary</label>
    </div>
</div>
<div class="form-group col-md-12">
    <div class="custom-control custom-checkbox custom-control-inline">
        <input type="checkbox" id="eduSecondary" name="education[]" 
        class="custom-control-input" value="secondary" />
        <label class="custom-control-label" for="eduSecondary">secondary</label>
    </div>
</div>
<div class="form-group col-md-12">
    <div class="custom-control custom-checkbox custom-control-inline">
        <input type="checkbox" id="eduUniversity" name="education[]" 
        class="custom-control-input" value="university" />
        <label class="custom-control-label"for="eduUniversity">university</label>
    </div>
</div>

В бэкэнде я использую laravel для хранения значений в базе данных, но при этом запускается ошибка сохранения массива в строку в mysql.

public function store(Request $request,AdProfile $adprofile)
{
    $adprofile->education = $request->education[];
    $adprofile->save();
    return redirect()->route('adprofile.profilecomplete');
}

Ответы [ 4 ]

2 голосов
/ 24 апреля 2019

попробуйте это.

$variable = print_r($someArray,1)
1 голос
/ 24 апреля 2019

В вашей модели "AdProfile" добавьте переменную приведения атрибутов, чтобы laravel автоматически конвертировал массив в json и json в массив,

Как это

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class AdProfile extends Model
{
    /**
     * The attributes that should be casted to native types.
     *
     * @var array
     */
    protected $casts = [
        'education' => 'array',
    ];
}
1 голос
/ 24 апреля 2019

Вы можете использовать php implode для этого или вы также можете использовать коллекцию laravel для этого.вот пример

collect([1, 2, 3, 4, 5])->implode('-');

// '1-2-3-4-5'

см. документацию для этого Implode

или вы можете использовать функцию php implode

смотрите это

$arr = array('Hello','World!','Beautiful','Day!');
echo implode(" ",$arr);
//Hello World! Beautiful Day!
0 голосов
/ 24 апреля 2019
 print_r($request->education); //It is an array print

$str_json = json_encode($request->education); //array to json string conversion
echo  $str_json; // printing json string

print_r(json_decode($str_json)); //printing array after convert json string to array

exit; // exiting further execution to check resutls
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...