@@ 357-370 (lines=14) @@ | ||
354 | * @param Model $model The model to remove from the collection. |
|
355 | * @return self |
|
356 | */ |
|
357 | public function remove($key, Model $model) |
|
358 | { |
|
359 | if (false === $this->isHasMany($key)) { |
|
360 | return $this; |
|
361 | } |
|
362 | if (true === $this->isInverse($key)) { |
|
363 | throw ModelException::cannotModifyInverse($this, $key); |
|
364 | } |
|
365 | $this->touch(); |
|
366 | $collection = $this->hasManyRelationships->get($key); |
|
367 | $collection->remove($model); |
|
368 | $this->doDirtyCheck(); |
|
369 | return $this; |
|
370 | } |
|
371 | ||
372 | /** |
|
373 | * Sets a model property: an attribute value, a has-one model, or an entire has-many model collection. |
|
@@ 452-464 (lines=13) @@ | ||
449 | * @param Model|null $model The model to relate. |
|
450 | * @return self |
|
451 | */ |
|
452 | protected function setHasOne($key, Model $model = null) |
|
453 | { |
|
454 | if (true === $this->isInverse($key)) { |
|
455 | throw ModelException::cannotModifyInverse($this, $key); |
|
456 | } |
|
457 | if (null !== $model) { |
|
458 | $this->validateRelSet($key, $model->getType()); |
|
459 | } |
|
460 | $this->touch(); |
|
461 | $this->hasOneRelationships->set($key, $model); |
|
462 | $this->doDirtyCheck(); |
|
463 | return $this; |
|
464 | } |
|
465 | ||
466 | /** |
|
467 | * Validates that the model type (from a Model or Collection instance) can be set to the relationship field. |