Во-первых, немного предыстории, чтобы понять трудности, с которыми я столкнулся при создании области запроса.
Вот часть моей схемы:
Structure
- id
- head_office_id
Establishment
- id
- structure_id
Вот как определяются отношения вмои модели
class Structure {
public function head_office(): BelongsTo
{
return $this->belongsTo(Establishment::class, 'head_office_id');
}
public function establishments(): HasMany
{
return $this->hasMany(Establishment::class);
}
}
class Establishment {
public function structure(): BelongsTo
{
return $this->belongsTo(Structure::class);
}
}
Я хотел бы охватить заведения, которые могут исключать все заведения, являющиеся головными офисами структуры, к которой они принадлежат.
Establishment::notHeadOffice()->get()
Например:
Structures
id | head_office_id
1 | null
2 | 3
Establishments
id | structure_id
1 | 1
2 | 1
3 | 2
4 | 2
5 | 2
В этом случае сфера должна вернуть все заведения , но номер 3 (поскольку предприятие 3 связано со структурой 2 и является головным офисом этой структуры)
Я пробовал несколько вещей, но это выходит за рамки моих знаний о построителе запросов.
Есть какие-нибудь подсказки?
PS: модель не может быть изменена