Дело HasMany
Предполагается, что $entity
является экземпляром Eloquent, а collection
является магическим c свойством, представляющим отношение hasMany
, поэтому у вас есть что-то вроде:
class Entity extends Model
{
//...
public function collection()
{
return $this->hasMany(Entity:class);
}
//...
}
, тогда collection
- это только короткий путь для доступа к $entity->collection()->get()
, поэтому его нельзя использовать для изменения БД.
Вместо этого вы можете вызвать
$entity->collection()->save(
Entity::where('field', 'value')->first()
);
в соответствии с https://laravel.com/api/6.x/Illuminate/Database/Eloquent/Relations/HasMany.html#method_save
BelongsToMany
Отношение «многие ко многим» имеет метод attach
, который принимает ключ связанной записи в качестве первого аргумента :
$entity->collection()->save(
//assume relation is built by primary key
Entity::where('field', 'value')->first()->getKey()
);
Полная документация здесь - https://laravel.com/docs/6.x/eloquent-relationships