Php Laravel关系查询,其中使用数组

Php Laravel关系查询,其中使用数组,php,laravel,laravel-5,eloquent,Php,Laravel,Laravel 5,Eloquent,我试图从数据库中返回所有具有设置外键(属性组)的属性。我已经在模型中设置了所有关系,但我不确定如何使用集合或数组查询这些关系 属性组- public function attribute() { return $this->hasMany('App\Attribute', 'group_id'); } 属性- public function attributeGroup() { return $this->belongsTo('App\AttributeGroup'

我试图从数据库中返回所有具有设置外键(属性组)的属性。我已经在模型中设置了所有关系,但我不确定如何使用集合或数组查询这些关系

属性组-

public function attribute()
{
    return $this->hasMany('App\Attribute', 'group_id');
}
属性-

public function attributeGroup()
{
    return $this->belongsTo('App\AttributeGroup');
}
我目前的问题-

$page = Page::where('slug', $slug)->firstOrFail();

$groups = AttributeGroup::where('page_id', $page->id)->get()->toArray();

$atts = Attribute::where('group_id', $groups[0]['id'])->get();
这是因为我们使用
$groups[0]

是否有一种简单的方法可以使用数组之间的关系将数组传递给查询,或者循环传递结果,然后将自己的数组传递给查询是最好的方法

$attributes = array();
foreach ($groups as $group){
   array_push($attributes, $group['id']);
}
$atts = Attribute::where('group_id', $attributes)->get();
$groups
是一个。因此,您可以使用该方法获取所需的ID:

$page = Page::where('slug', $slug)->firstOrFail();
$groups = AttributeGroup::where('page_id', $page->id)->get();
$atts = Attribute::where('group_id', $groups->pluck('id'))->get();
此外,如果您正确设置了关系,您应该能够循环浏览
$groups
,并访问那些
$groups
的属性。您可以测试它:

$groups = AttributeGroup::where('page_id', $page->id)->get();
dd($groups->first()->attributes);
$groups
是一个。因此,您可以使用该方法获取所需的ID:

$page = Page::where('slug', $slug)->firstOrFail();
$groups = AttributeGroup::where('page_id', $page->id)->get();
$atts = Attribute::where('group_id', $groups->pluck('id'))->get();
此外,如果您正确设置了关系,您应该能够循环浏览
$groups
,并访问那些
$groups
的属性。您可以测试它:

$groups = AttributeGroup::where('page_id', $page->id)->get();
dd($groups->first()->attributes);

啊,太棒了,我知道会有更好的办法,谢谢。如果我使用Pulk并希望向该集合添加一些内容,例如
组名
,我是否需要重新构建自己的阵列?e、 g使用
$groups
集合上方的查询,其中有一个
group\u name
值,我想返回该值并将其与视图中的
$atts
相关联。您可以将多个列传递到
pluck()
,然后使用
map()
根据需要修改集合。啊,这样我就可以使用map将
$groups->name
添加到每个
$atts
结果中?每次调用
->get()
都会得到一个集合,并且所有方法都可用。啊,太棒了,我知道会有更好的方法谢谢。如果我使用Pulk并希望向该集合添加一些内容,例如
组名
,我是否需要重新构建自己的阵列?e、 g使用
$groups
集合上方的查询,其中有一个
group\u name
值,我想返回该值并将其与视图中的
$atts
相关联。您可以将多个列传递到
pluck()
,然后使用
map()
根据需要修改集合。啊,这样我就可以使用map将
$groups->name
添加到每个
$atts
结果中?每次调用
->get()
都会得到一个集合,并且所有方法都对您可用。