У меня есть 3 модели
Пользователь имеет отношение hasmany (domains ()) с Domain , и это отношение hasMany (почтовые ящики) с Mailbox
Пользователь. php
public function domains()
{
return $this->hasMany(Domain::class);
}
Домен. php
public function user()
{
return $this->belongsTo(User::class);
}
public function mailboxes()
{
return $this->hasMany(Mailbox::class, 'domain', 'domain');
}
Почтовый ящик. php
public function domains()
{
return $this->belongsTo('App\Domain', 'domain', 'domain');
}
Приведенный ниже код отлично работает для получения только принадлежащих почтовых ящиков, но если поместить его в политики, не работает.
public function view(User $user, Mailbox $mailbox)
{
$domains = Domain::where('user_id', $user->id)->pluck('domain')->toArray();
return User::with([
'domains.mailboxes' => function ($builder) use ($domains) {
$builder->where('domain',$domains);
}
])->find($user);
}
Я попытался переопределить indexQuery для моей модели Nova / Mailbox, но не работает. Восстановить все почтовые ящики в базе данных
public static function indexQuery(NovaRequest $request, $query)
{
$domains = Domain::where('user_id', $request->user()->id)->pluck('domain')->toArray();
return User::with([
'domains.mailboxes' => function ($builder) use ($domains) {
$builder->where('domain',$domains);
}
])->find($user);
if ($request->user()->is_super_admin) {
return $query;
} else {
return User::with([
'domains.mailboxes' => function ($builder) use ($domains) {
$builder->where('domain',$domains);
}
])->find($user);
}
}