/** * MorphToMany constructor. * @param \Notadd\Foundation\Database\Eloquent\Builder $query * @param \Notadd\Foundation\Database\Eloquent\Model $parent * @param string $name * @param string $table * @param string $foreignKey * @param string $otherKey * @param string $relationName * @param bool $inverse */ public function __construct(Builder $query, Model $parent, $name, $table, $foreignKey, $otherKey, $relationName = null, $inverse = false) { $this->inverse = $inverse; $this->morphType = $name . '_type'; $this->morphClass = $inverse ? $query->getModel()->getMorphClass() : $parent->getMorphClass(); parent::__construct($query, $parent, $table, $foreignKey, $otherKey, $relationName); }
/** * @param \Notadd\Foundation\Database\Eloquent\Model $model * @return \Notadd\Foundation\Database\Eloquent\Model */ public function associate($model) { $this->parent->setAttribute($this->foreignKey, $model->getKey()); $this->parent->setAttribute($this->morphType, $model->getMorphClass()); return $this->parent->setRelation($this->relation, $model); }
/** * MorphOneOrMany constructor. * @param \Notadd\Foundation\Database\Eloquent\Builder $query * @param \Notadd\Foundation\Database\Eloquent\Model $parent * @param string $type * @param string $id * @param string $localKey */ public function __construct(Builder $query, Model $parent, $type, $id, $localKey) { $this->morphType = $type; $this->morphClass = $parent->getMorphClass(); parent::__construct($query, $parent, $id, $localKey); }