是否有更简单的方法来迭代Laravel中的对象属性列表

时间:2014-11-11 14:28:49

标签: php laravel properties eloquent

我有一个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();
    }

此代码可以正常工作,但是当我已经有一个对象列表时创建一个新数组似乎很懒。我试着查看雄辩的文档,但我无法解决这个问题。

我需要能够访问'属性' $occupied的列,因此我可以运行whereNotIn('id', $occupied->property)

之类的内容

谢谢

1 个答案:

答案 0 :(得分:1)

现在无法测试它,但这应该可以工作(它甚至可以在不转换为$occupied集合的数组的情况下工作):

$occupiedProperties = array_pluck((array)$occupied, 'property');

它使用array_pluck()辅助方法:http://laravel.com/docs/4.2/helpers#arrays