@@ -102,20 +102,31 @@ private function buildQuery(Builder $builder, Link $link, mixed $identifier): Bu
102
102
103
103
if ($ from = $ link ->getFromProperty ()) {
104
104
$ relation = $ this ->application ->make ($ link ->getFromClass ());
105
-
106
- if (!method_exists ($ relation ->{$ from }(), 'getQualifiedForeignKeyName ' ) && method_exists ($ relation ->{$ from }(), 'getQualifiedForeignPivotKeyName ' )) {
107
- /** @var \Illuminate\Database\Eloquent\Relations\BelongsToMany<Model, Model> $relation */
108
- /** @var \Illuminate\Database\Eloquent\Relations\BelongsToMany<Model, Model> $relation_query */
109
- $ relation_query = $ relation ->{$ from }();
110
-
111
- return $ builder ->getModel ()->join (
112
- $ relation_query ->getTable (), $ relation ->{$ from }()->getQualifiedRelatedPivotKeyName (), $ builder ->getModel ()->getQualifiedKeyName ())
113
- ->where ($ relation ->{$ from }()->getQualifiedForeignPivotKeyName (),
114
- $ identifier )
105
+ $ relationQuery = $ relation ->{$ from }();
106
+ if (!method_exists ($ relationQuery , 'getQualifiedForeignKeyName ' ) && method_exists ($ relationQuery , 'getQualifiedForeignPivotKeyName ' )) {
107
+ return $ builder ->getModel ()
108
+ ->join (
109
+ $ relationQuery ->getTable (), // @phpstan-ignore-line
110
+ $ relationQuery ->getQualifiedRelatedPivotKeyName (), // @phpstan-ignore-line
111
+ $ builder ->getModel ()->getQualifiedKeyName ()
112
+ )
113
+ ->where (
114
+ $ relationQuery ->getQualifiedForeignPivotKeyName (), // @phpstan-ignore-line
115
+ $ identifier
116
+ )
115
117
->select ($ builder ->getModel ()->getTable ().'.* ' );
116
118
}
117
119
118
- return $ builder ->getModel ()->where ($ relation ->{$ from }()->getQualifiedForeignKeyName (), $ identifier );
120
+ if (method_exists ($ relationQuery , 'dissociate ' )) {
121
+ return $ builder ->getModel ()
122
+ ->join (
123
+ $ relationQuery ->getParent ()->getTable (), // @phpstan-ignore-line
124
+ $ relationQuery ->getParent ()->getQualifiedKeyName (), // @phpstan-ignore-line
125
+ $ identifier
126
+ );
127
+ }
128
+
129
+ return $ builder ->getModel ()->where ($ relationQuery ->getQualifiedForeignKeyName (), $ identifier );
119
130
}
120
131
121
132
return $ builder ->where ($ builder ->getModel ()->qualifyColumn ($ link ->getIdentifiers ()[0 ]), $ identifier );
0 commit comments