Текущие laravel отношения моделей: ParentModel
может иметь много документов, ChildModel
может иметь много документов, один и тот же Documents
может принадлежать любому из ParentModel
и ChildModel
. Также ChildModel
всегда принадлежит одному ParentModel
. ParentModel
может иметь несколько ChildModels
.
отношений App \ ParentModel
...
public function childmodels()
{
return $this->hasMany('App\ChildModel');
}
public function documents()
{
return $this->morphToMany('App\Document', 'documentable');
}
...
отношений App \ ChildModel
...
public function parentmodel()
{
return $this->belongsTo('App\ParentModel');
}
public function documents()
{
return $this->morphToMany('App\Document', 'documentable');
}
...
App \ Document
...
public function parentmodels()
{
return $this->morphedByMany('App\ParentModel','documentable');
}
public function childmodels()
{
return $this->morphedByMany('App\ChildModel','documentable');
}
...
Теперь я пытаюсь получить все записи ChildModels
(1), которые имеют документы с определенным типом c и (2) его ParentModel
также могут иметь документы.
( 1) первая цель может быть достигнута таким методом ChildModel
.
/* checking GET param to join this condition to final query */
if($request->has('report') && $request->input('report') == 'on') {
/* get all documents related to CurrentModel */
$query->whereHas('documents',function (Builder $query) {
$query->where('type', 1);
});
}
Но это явно не включает записи ChildModels
, ParentModel
из которых имеет документы с определенным типом c.
Итак, вопрос: как включить такое условие в ChildModel
конструктор запросов?