Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#26 30.11.2016 18:49:11

Re: Как не избегать дублирования

Как-то так можно попробовать:

$array_images[] = $collection->where('photo_symbol_id', $id)->first()->pluck('photo_src', 'photo_id', 'photo_symbol_id')->toArray();

Потом сделать flatten(), при необходимости.

Или просто:

$row = $collection->where('photo_symbol_id', $id)->first();

$array_images[] = [
    'photo_id' => $row->photo_id,
    'photo_src' => $row->photo_src,
    'photo_symbol_id' => $row->photo_symbol_id,
];

Изменено AlexeyMezenin (30.11.2016 19:18:46)

Не в сети

#27 01.12.2016 10:22:34

respectpick
Откуда: Москва
Сообщений: 83

Re: Как не избегать дублирования

у меня как-то так получилось

        foreach ($array_symbols_id as $id) {
            $array_images[] = $collection->where('photo_symbol_id', $id)->random();
        }

а теперь когда пытаюсь разложить массив

        $i = 0;
        foreach($images as $img){
            $name_to_save = str_replace("/img/", "", $img->photo_src);
            $path_to_img = $main_path.$img->photo_src;
            $path_to_save_img = $save_path.$name_to_save;

            $image = Image::make($path_to_img);
            $image->resize($width,$height);
            $image->save($path_to_save_img);

            $temp_images[$img->photo_symbol_id.$i] = "/temp_img/".$name_to_save;
            $temp_images[$img->photo_symbol_id.$i]['photo_id'] = $img->photo_id;
            $i++;
        }

ловлю ошибку в строке

$temp_images[$img->photo_symbol_id.$i]['photo_id'] = $img->photo_id;

Illegal string offset 'photo_id'

с чем это может быть связано?

Не в сети

#28 01.12.2016 10:56:14

Re: Как не избегать дублирования

respectpick пишет:
            $temp_images[$img->photo_symbol_id.$i] = "/temp_img/".$name_to_save;
            $temp_images[$img->photo_symbol_id.$i]['photo_id'] = $img->photo_id;
            $i++;
        }

с чем это может быть связано?

Не смущает, что $temp_images[$img->photo_symbol_id.$i] - это строка, а ты пытаешься обратиться к ней по индексу $temp_images[$img->photo_symbol_id.$i]['photo_id'] да ещё и присвоить туда что-то?
ты сделал примерно так
$string = "hello laravel.ru";
$string['super_index'] = 123;

Так нельзя.

Не в сети

#29 01.12.2016 10:57:35

Re: Как не избегать дублирования

Попробуй так

        $i = 0;
        foreach($images as $img){
            $name_to_save = str_replace("/img/", "", $img->photo_src);
            $path_to_img = $main_path.$img->photo_src;
            $path_to_save_img = $save_path.$name_to_save;

            $image = Image::make($path_to_img);
            $image->resize($width,$height);
            $image->save($path_to_save_img);

            $temp_images[$img->photo_symbol_id.$i] =[
                     'path' =>  "/temp_img/".$name_to_save,
                     'photo_id' => $img->photo_id
            ]
            $i++;
        }

Не в сети

#30 01.12.2016 11:11:37

respectpick
Откуда: Москва
Сообщений: 83

Re: Как не избегать дублирования

covobo пишет:
respectpick пишет:
            $temp_images[$img->photo_symbol_id.$i] = "/temp_img/".$name_to_save;
            $temp_images[$img->photo_symbol_id.$i]['photo_id'] = $img->photo_id;
            $i++;
        }

с чем это может быть связано?

Не смущает, что $temp_images[$img->photo_symbol_id.$i] - это строка, а ты пытаешься обратиться к ней по индексу $temp_images[$img->photo_symbol_id.$i]['photo_id'] да ещё и присвоить туда что-то?
ты сделал примерно так
$string = "hello laravel.ru";
$string['super_index'] = 123;

Так нельзя.

точно. благодарю

Не в сети

Подвал раздела