как удалить ненужные значения из массива - PullRequest
2 голосов
/ 13 марта 2020

У кого-нибудь есть идея, почему я получаю такой массив? Я хочу только эту часть ниже. Мне нужно удалить эти mysql соединения и другие нежелательные массивы из этого.

array (
  'name' => 'Westwood',
  'id' => 538,
),
 0 => 
  Common\Models\Property::__set_state(array(
     'connection' => 'mysql',
     'table' => NULL,
     'primaryKey' => 'id',
     'keyType' => 'int',
     'incrementing' => true,
     'with' => 
    array (
    ),
     'perPage' => 15,
     'exists' => true,
     'wasRecentlyCreated' => false,
     'attributes' => 
    array (
      'name' => 'Westwood',
      'id' => 538,
    ),
     'guarded' => 
    array (
      0 => '*',
    ),
  )),

Код ниже показывает, что я сделал, чтобы получить этот массив. когда я Log::info($results);

получаю этот массив, надеюсь, вы понимаете мой вопрос.

$properties = model::where('status', '=', 'Active')
                ->get();

if($jsonData->city !== "") {
    foreach ($properties as $property) {
        if($property->city === $jsonData->city) {
            $results[] = $property;
        }
    }
}

Ответы [ 3 ]

3 голосов
/ 13 марта 2020

Поскольку вы используете get(), он вернет коллекцию laravel, а не массив. Если вы хотите массив, вы можете использовать toArray(), это будет выглядеть так:

$properties = prop_model::where('status', '=', 'Active')
                ->where('propertylive', '=', 'Yes')
                ->get()
                ->toArray();
2 голосов
/ 13 марта 2020

На основе get () manual

Метод get возвращает Illuminate \ Support \ Collection, содержащую результаты, где каждый результат является экземпляром объекта PHP stdClass , Вы можете получить доступ к значению каждого столбца, обратившись к столбцу как свойству объекта

, он вернет коллекцию laravel.

Поэтому используйте toArray () , чтобы получить массив

Метод toArray преобразует коллекцию в простой массив PHP. Если значениями коллекции являются модели Eloquent, модели также будут преобразованы в массивы

Также укажите имена полей для сужения массива:

$properties = prop_model::select('name','id')
                ->where(['status', '=', 'Active'],['propertylive', '=', 'Yes'])
                ->get()
                ->toArray();

Ссылка взята: Как создать множественный запрос условия Where с помощью Laravel Eloquent?

1 голос
/ 13 марта 2020

get() функция возвращает коллекцию. Таким образом, в соответствии с документацией Laravel вы можете использовать функцию toArray()

. Метод toArray преобразует коллекцию в простой массив PHP. Если значениями коллекции являются модели Eloquent, модели также будут преобразованы в массивы.

$properties = prop_model::where('status', '=', 'Active')
                ->where('propertylive', '=', 'Yes')
                ->get()
                ->toArray();

Laravel -> Коллекция -> toArray

...