Есть способ, но вы обычно не используете его, чтобы «проверить», есть ли связанные модели.
Если у вас есть поле, которое определяет, представляет ли модель отца или мать, например, is_father, вы можете сделать:
public function kids()
{
return ($this->is_father)
? $this->hasMany(Kid::class, 'father_id')
: $this->hasMany(Kid::class, 'mother_id');
}
По сути, метод отношений ДОЛЖЕН возвращать экземпляр отношения. Но вы можете сделать логику, прежде чем вернуть это.
ПРИМЕЧАНИЕ: Отношение кэшируется, поэтому даже если значение is_father изменится в том же потоке, оно будет использовать то же отношение, что и раньше. Это может привести к нежелательным ошибкам.