| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- <?php
- namespace Illuminate\Database\Eloquent\Factories;
- use Illuminate\Database\Eloquent\Model;
- use Illuminate\Support\Collection;
- class BelongsToManyRelationship
- {
- /**
- * The related factory instance.
- *
- * @var \Illuminate\Database\Eloquent\Factories\Factory|\Illuminate\Support\Collection|\Illuminate\Database\Eloquent\Model|array
- */
- protected $factory;
- /**
- * The pivot attributes / attribute resolver.
- *
- * @var callable|array
- */
- protected $pivot;
- /**
- * The relationship name.
- *
- * @var string
- */
- protected $relationship;
- /**
- * Create a new attached relationship definition.
- *
- * @param \Illuminate\Database\Eloquent\Factories\Factory|\Illuminate\Support\Collection|\Illuminate\Database\Eloquent\Model|array $factory
- * @param callable|array $pivot
- * @param string $relationship
- * @return void
- */
- public function __construct($factory, $pivot, $relationship)
- {
- $this->factory = $factory;
- $this->pivot = $pivot;
- $this->relationship = $relationship;
- }
- /**
- * Create the attached relationship for the given model.
- *
- * @param \Illuminate\Database\Eloquent\Model $model
- * @return void
- */
- public function createFor(Model $model)
- {
- Collection::wrap($this->factory instanceof Factory ? $this->factory->create([], $model) : $this->factory)->each(function ($attachable) use ($model) {
- $model->{$this->relationship}()->attach(
- $attachable,
- is_callable($this->pivot) ? call_user_func($this->pivot, $model) : $this->pivot
- );
- });
- }
- /**
- * Specify the model instances to always use when creating relationships.
- *
- * @param \Illuminate\Support\Collection $recycle
- * @return $this
- */
- public function recycle($recycle)
- {
- if ($this->factory instanceof Factory) {
- $this->factory = $this->factory->recycle($recycle);
- }
- return $this;
- }
- }
|