hulkur/laravel-hasmany-keyby

添加通过定义的键值将相关模型附加到父模型上的多对多关系的可能性。通常这将是相关模型的 id

7.0 2024-03-25 22:05 UTC

This package is auto-updated.

Last update: 2024-09-25 23:14:04 UTC


README

Latest Version on Packagist GitHub Workflow Status Total Downloads

添加通过定义的键值将相关模型附加到父模型上的多对多关系的可能性。通常这将是相关模型的 id

调用

$users = User::with('groups')->all()

laravel 默认

$user->groups = [0 => $group];

使用 keyBy 的新方法

class User extends Model
{
  use HasManyKeyByRelationship;

  public function groups()
  {
    return $this->hasMany(Group::class)->keyBy('id'); // can be string or callable
  }
}

结果

$user->groups = [$group->id => $group];

这在需要大量操作 pivot 记录时特别有用。例如,用户/组网格,其中网格字段是 pivot 记录中的某些值,并且并非所有 pivot 记录都存在。

@foreach($users as $user)
  @foreach($groups as $group)
    {{optional($user->accesslevels[$group->id])->level}}
  @endforeach
@endforeach