У меня есть приложение Laravel, где я использую немного кода, который кажется действительно не интуитивным.
В коде я возвращаю список объектов ($occupied
) которые все имеют столбец «свойство». Затем я продолжаю создавать массив списка свойств объектов ($occupiedproperty
) просто использовать его в вызове whereNotIn.
if ($occupied = Residency::currentResidents()){
// Here is the pointless part //////
$occupiedproperty = array();
foreach ($occupied as $occ) {
array_push($occupiedproperty, $occ->property);
}
///////////////////////////////////
return Property::whereNotIn('id', $occupiedproperty)->get();
}
Этот код отлично работает, но создание нового массива, когда у меня уже есть список объектов, кажется ленивым. Я попытался просмотреть документацию Eloquent, но не смог этого понять.
Мне нужно иметь доступ к столбцу «свойство» $occupied
так что я могу запустить что-то вроде whereNotIn('id', $occupied->property)
Спасибо
Не могу проверить это сейчас, но это должно работать (это должно работать даже без приведения к массиву $occupied
коллекция):
$occupiedProperties = array_pluck((array)$occupied, 'property');
Он использует array_pluck()
вспомогательный метод: http://laravel.com/docs/4.2/helpers#arrays
Других решений пока нет …