Вам нужно будет добавить конструктор к вашей дочерней модели (которая расширяет класс Model).
private ownerId;
public function __construct(int ownerId)
{
parent::__construct($attributes);
$this->ownerId = $ownerId;
}
Затем вы можете получить доступ к этому в вашем классе.
public function child()
{
return $this->hasMany(Category::class, 'parent_id', 'id')->where('owner_id', $this->ownerId);
}
Выбудет делать это, если каждый раз, когда вы захотите создать экземпляр класса Child, вам нужно будет предоставить его владельцу:
$ownerId = 5;
$child = new Child($ownerId);
В качестве альтернативы, вы можете передать параметр непосредственно в эту функцию, откуда бы вы ее ни вызывали, например,:
public function childWithOwner(int $ownerId)
{
return $this->hasMany(Category::class, 'parent_id', 'id')->where('owner_id', $ownerId);
}
И вы бы назвали это: $this->childWithOwner(4);
В качестве подсказки я бы посоветовал вам начинать имена ваших функций со строчной буквы.