Laravel 5.4高阶消息传递

时间:2017-03-03 12:46:36

标签: php laravel-5.4

问题:为什么旧方法返回正确的值,请参阅结果旧方法,新的HOM方法返回整个集合?

角色模型

var iframe = $("#Iframe")[0].contentWindow.document;
                iframe.open(); 
                iframe.write(data);
                iframe.close();

控制器

class Role extends Model {
    public function getName() {
        return $this->name;
    }
}

如果我使用更高阶的消息传递实现新方法,它会返回整个Collection,如果我使用旧方法,我会得到正确的结果。

结果旧方法

  

string(11)“Application”

     

string(6)“System”

     

string(7)“Network”

     

string(7)“经理”

结果新方法

$roles = Role::all(); // get all roles to test

// old approach
$roles->each(function(Role $i) {
    var_dump($i->getName()); 
});

// new approach (HOM)
var_dump($roles->each->getName());

1 个答案:

答案 0 :(得分:3)

each只是遍历集合,它实际上并没有返回任何内容。如果您希望它为每次迭代返回getName()的值,那么您可以使用map eg。

dump($roles->map->getName());

希望这有帮助!