PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.15.5
Independent Analytics – WordPress Analytics Plugin v2.15.5
2.15.5 2.15.4 2.15.3 2.15.2 2.15.1 2.15.0 2.14.10 trunk 1.1 1.10 1.10.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.17.1 1.17.2 1.17.3 1.17.4 1.18 1.18.1 1.19.0 1.19.1 1.2 1.20.0 1.21.0 1.22.0 1.22.1 1.23.0 1.23.1 1.24.0 1.24.1 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.28.1 1.28.2 1.28.3 1.29.0 1.3 1.30.0 1.30.1 1.4 1.5 1.6 1.7 1.8 1.9 2.0.0 2.0.1 2.1.4 2.1.5 2.1.6 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.10 2.11.2 2.11.3 2.11.4 2.11.5 2.11.6 2.11.7 2.11.8 2.11.9 2.12.0 2.12.1 2.12.2 2.13.1 2.13.2 2.13.5 2.13.6 2.14.0 2.14.1 2.14.2 2.14.4 2.14.6 2.14.7 2.14.8 2.14.9 2.2.0 2.2.1 2.3.1 2.3.2 2.4.2 2.4.3 2.5.0 2.5.1 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.7.0 2.7.1 2.7.2 2.7.3 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.8.9 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7
independent-analytics / vendor / illuminate / database / Eloquent / Relations / MorphToMany.php
independent-analytics / vendor / illuminate / database / Eloquent / Relations Last commit date
Concerns 1 month ago BelongsTo.php 2 years ago BelongsToMany.php 1 month ago HasMany.php 2 years ago HasManyThrough.php 1 month ago HasOne.php 1 month ago HasOneOrMany.php 1 month ago HasOneThrough.php 2 years ago MorphMany.php 2 years ago MorphOne.php 1 month ago MorphOneOrMany.php 2 years ago MorphPivot.php 1 month ago MorphTo.php 6 months ago MorphToMany.php 2 years ago Pivot.php 2 years ago Relation.php 1 month ago
MorphToMany.php
174 lines
1 <?php
2
3 namespace IAWPSCOPED\Illuminate\Database\Eloquent\Relations;
4
5 use IAWPSCOPED\Illuminate\Database\Eloquent\Builder;
6 use IAWPSCOPED\Illuminate\Database\Eloquent\Model;
7 use IAWPSCOPED\Illuminate\Support\Arr;
8 /** @internal */
9 class MorphToMany extends BelongsToMany
10 {
11 /**
12 * The type of the polymorphic relation.
13 *
14 * @var string
15 */
16 protected $morphType;
17 /**
18 * The class name of the morph type constraint.
19 *
20 * @var string
21 */
22 protected $morphClass;
23 /**
24 * Indicates if we are connecting the inverse of the relation.
25 *
26 * This primarily affects the morphClass constraint.
27 *
28 * @var bool
29 */
30 protected $inverse;
31 /**
32 * Create a new morph to many relationship instance.
33 *
34 * @param \Illuminate\Database\Eloquent\Builder $query
35 * @param \Illuminate\Database\Eloquent\Model $parent
36 * @param string $name
37 * @param string $table
38 * @param string $foreignPivotKey
39 * @param string $relatedPivotKey
40 * @param string $parentKey
41 * @param string $relatedKey
42 * @param string|null $relationName
43 * @param bool $inverse
44 * @return void
45 */
46 public function __construct(Builder $query, Model $parent, $name, $table, $foreignPivotKey, $relatedPivotKey, $parentKey, $relatedKey, $relationName = null, $inverse = \false)
47 {
48 $this->inverse = $inverse;
49 $this->morphType = $name . '_type';
50 $this->morphClass = $inverse ? $query->getModel()->getMorphClass() : $parent->getMorphClass();
51 parent::__construct($query, $parent, $table, $foreignPivotKey, $relatedPivotKey, $parentKey, $relatedKey, $relationName);
52 }
53 /**
54 * Set the where clause for the relation query.
55 *
56 * @return $this
57 */
58 protected function addWhereConstraints()
59 {
60 parent::addWhereConstraints();
61 $this->query->where($this->qualifyPivotColumn($this->morphType), $this->morphClass);
62 return $this;
63 }
64 /**
65 * Set the constraints for an eager load of the relation.
66 *
67 * @param array $models
68 * @return void
69 */
70 public function addEagerConstraints(array $models)
71 {
72 parent::addEagerConstraints($models);
73 $this->query->where($this->qualifyPivotColumn($this->morphType), $this->morphClass);
74 }
75 /**
76 * Create a new pivot attachment record.
77 *
78 * @param int $id
79 * @param bool $timed
80 * @return array
81 */
82 protected function baseAttachRecord($id, $timed)
83 {
84 return Arr::add(parent::baseAttachRecord($id, $timed), $this->morphType, $this->morphClass);
85 }
86 /**
87 * Add the constraints for a relationship count query.
88 *
89 * @param \Illuminate\Database\Eloquent\Builder $query
90 * @param \Illuminate\Database\Eloquent\Builder $parentQuery
91 * @param array|mixed $columns
92 * @return \Illuminate\Database\Eloquent\Builder
93 */
94 public function getRelationExistenceQuery(Builder $query, Builder $parentQuery, $columns = ['*'])
95 {
96 return parent::getRelationExistenceQuery($query, $parentQuery, $columns)->where($this->qualifyPivotColumn($this->morphType), $this->morphClass);
97 }
98 /**
99 * Get the pivot models that are currently attached.
100 *
101 * @return \Illuminate\Support\Collection
102 */
103 protected function getCurrentlyAttachedPivots()
104 {
105 return parent::getCurrentlyAttachedPivots()->map(function ($record) {
106 return $record instanceof MorphPivot ? $record->setMorphType($this->morphType)->setMorphClass($this->morphClass) : $record;
107 });
108 }
109 /**
110 * Create a new query builder for the pivot table.
111 *
112 * @return \Illuminate\Database\Query\Builder
113 */
114 public function newPivotQuery()
115 {
116 return parent::newPivotQuery()->where($this->morphType, $this->morphClass);
117 }
118 /**
119 * Create a new pivot model instance.
120 *
121 * @param array $attributes
122 * @param bool $exists
123 * @return \Illuminate\Database\Eloquent\Relations\Pivot
124 */
125 public function newPivot(array $attributes = [], $exists = \false)
126 {
127 $using = $this->using;
128 $pivot = $using ? $using::fromRawAttributes($this->parent, $attributes, $this->table, $exists) : MorphPivot::fromAttributes($this->parent, $attributes, $this->table, $exists);
129 $pivot->setPivotKeys($this->foreignPivotKey, $this->relatedPivotKey)->setMorphType($this->morphType)->setMorphClass($this->morphClass);
130 return $pivot;
131 }
132 /**
133 * Get the pivot columns for the relation.
134 *
135 * "pivot_" is prefixed at each column for easy removal later.
136 *
137 * @return array
138 */
139 protected function aliasedPivotColumns()
140 {
141 $defaults = [$this->foreignPivotKey, $this->relatedPivotKey, $this->morphType];
142 return \IAWPSCOPED\collect(\array_merge($defaults, $this->pivotColumns))->map(function ($column) {
143 return $this->qualifyPivotColumn($column) . ' as pivot_' . $column;
144 })->unique()->all();
145 }
146 /**
147 * Get the foreign key "type" name.
148 *
149 * @return string
150 */
151 public function getMorphType()
152 {
153 return $this->morphType;
154 }
155 /**
156 * Get the class name of the parent model.
157 *
158 * @return string
159 */
160 public function getMorphClass()
161 {
162 return $this->morphClass;
163 }
164 /**
165 * Get the indicator for a reverse relationship.
166 *
167 * @return bool
168 */
169 public function getInverse()
170 {
171 return $this->inverse;
172 }
173 }
174