отправить через запятую некоторый массив, сгенерированный в al oop в php и laravel - PullRequest
0 голосов
/ 17 июня 2020

предположим, что у нас есть объект, который принимает какое-то значение в виде массива, разделенного запятой:

$keyboard = new Keyboard(
            ['value1'],
            ['value2'],
            ['value3'],
            ['value4']
        );

Теперь я хочу получить какое-то значение из базы данных через al oop и, наконец, отправить их этому объекту . но я не знаю, как их собрать и отправить список, разделенный запятыми.

Я пишу этот код, но не могу получить от него соответствующий результат:

$brands = Option::with('translations')->whereHas('attribute', function ($query) {
                    $query->where('type', '=', 'brand');
                })->get();

                $titles = [];
                foreach ($brands as $key => $brand) {
                    $titles [] = array($brand->title_fa);
                }

                $keyboard = new Keyboard(
                    $titles
                );

Ответы [ 2 ]

4 голосов
/ 17 июня 2020

Вы можете использовать оператор ... для передачи параметров. Но прежде проверьте правильность размера массива.

$keyboard = new Keyboard(...$titles);
1 голос
/ 17 июня 2020

Сначала я предлагаю выбрать значение, которое вы хотите, а затем сопоставить их

Посмотрите на методы Laravel Collection, чтобы избежать ненужных циклов и сделать это более плавно

https://laravel.com/docs/7.x/collections

$brands = Option::with('translations')->whereHas('attribute', function ($query) {
                    $query->where('type', '=', 'brand');
                })->get()
                  ->pluck('title_fa')
                  ->map(function($brand){ return [$brand]; })->all()

Теперь у вас есть массив $brands по мере необходимости

Таким образом, вы можете передать его как массив или как Varidi c params с помощью оператора Splat, как предложено в другом ответе

$keyboard = new Keyboard($brands);
$keyboard = new Keyboard(...$brands);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...