调用Eloquent集合函数

问题描述 投票:1回答:2

我在3个不同的表/模型之间创建了一个模型关系。

由于hasMany-property得到了一个对象集合,我必须使用for循环访问每个Models方法以获取我想要的数据。反正有没有告诉我,我希望它在所有对象上运行相同的功能?

伪代码:

Model A     //HasMany Model B
Model B     //HasMany Model C, Belongs to A
Model C     //BelongsTo C


$foo = new User::Find(Auth::id());

//Need to loop the collection of data in order to get the information
foreach($foo->permissions as $permission)
{
    $name = $permission->permissionsTypes->name;
}

我试过这样做:

$foo->permissions->permissionsTypes;

但由于它是一个集合,它不起作用。

有没有其他方法来获取此信息而不通过数组循环?

谢谢你的指导!

laravel laravel-5
2个回答
1
投票

使用pluck()collapse()

$permissionsTypes = $foo->permissions->pluck('permissionsTypes')->collapse();

0
投票

如果是,那么您可能已经定义了hasMany关系,那么请将hasMany更改为hasOne

foreach($foo->permissions as $permission)
{
    $name = $permission->permissionsTypes->name;
}

或者你可以通过它的索引得到一个对象:

{{ $permission[0]->name}}

或者从集合中获取第一个对象:

{{ $permission->first() }}

当您使用find()first()时,您会得到一个对象,因此您可以使用简单的方法获取属性:

{{ $object->name}}
© www.soinside.com 2019 - 2024. All rights reserved.