Преобразование массива в строку laravel 7 - PullRequest
0 голосов
/ 30 апреля 2020

Мне нужно получить значения без строки в массиве. это будут имена полей:

 static function showCust(){
   $table = DB::table("dummy_db.customer")->select("*")->paginate(10);
   $getFieldName = ["CUST_NAME", "CUST_CITY"];

   foreach($table as $items){
        $a[] = $items->$getFieldName[0];
   }
   dd($a);
}

но результаты:

ErrorException Array to string conversion.

Ответы [ 2 ]

0 голосов
/ 30 апреля 2020

Проблема 1: вызвать свойство объекта по элементу массива

Ошибка msg возникает из-за того, что $getFieldName как переменная, объект вызывает переменную без [0], вам нужно заключить $getFieldName[0] в фигурную скобку:

$items->{$getFieldName[0]};

Проблема 2: Получить коллекцию из paginator:

Вы применяете paginate к построителю запросов, результатом будет объект Illuminate\Pagination\LengthAwarePaginator.

Если вы хотите, чтобы объекты клиента были внутри. Вы можете использовать getCollection() метод для $table:

   foreach($table->getCollection() as $items){
        $a[] = $items->${getFieldName[0]};
   }
0 голосов
/ 30 апреля 2020

Если вы пытаетесь получить только список CUST_CITY с помощью ключа CUST_NAME, вы можете использовать метод pluck():

$array = DB::table("dummy_db.customer")
    ->take(10)
    ->pluck('CUST_CITY','CUST_NAME');

...