Имея эту модель:
class Subject extends BaseEntity implements Treeable
{
use NodeTrait;
protected $table = 'subjects';
protected $rules = [
'label' => 'max:255',
'parent_id' => 'exists:subjects,id' // <--
];
protected function getScopeAttributes()
{
return [ 'user_id' ];
}
}
Затем я создаю новый экземпляр (parent_id ссылается на тот же идентификатор таблицы, а идентификатор 3 существует):
Subject::create([
'label' => 'foo',
'parent_id' => 3
])
Это приводит к двум запросам:
select count(*) as aggregate from subjects where id = 3
(дает ожидаемый результат 1)
select * from subjects where subjects.user_id is null and subjects.id = 3
(пустое выдача результата No query results for model [App\\Subject] 3
исключение)
Я обнаружил, что дополнительный subjects.user_id is null
добавлен из-за области действия, но как я могу добавить это к проверке? Либо его следует удалить, либо установить каким-либо образом в полезной нагрузке при создании или динамически с помощью auth()->id
. Кто-нибудь может помочь с этим?