У меня есть две таблицы, а именно:
1. users
columns: id, name
2. user_access
columns: id, user_id, user_access_id
user access
- это сводная таблица, которая определяет отношения между users
таблицей и users
самой таблицей. Например, пользователь может иметь доступ к данным некоторых других пользователей.
Я определил это отношение в User
модели.
Теперь я хочу получить эти идентификаторы пользователя для пользователя, который не существует в таблице user_access
. Например, пользователь может иметь доступ к идентификаторам 1 и 2, но у него нет доступа к идентификаторам 3 и 4, поэтому я хочу получить идентификаторы 3 и 4, а не 1 и 2.
Для этого Я использую whereDoesntHave eloquent, но он не работает для отношений с теми же таблицами, и я получаю следующую ошибку
Facade\Ignition\Exceptions\ViewException
Call to undefined method Illuminate\Database\Eloquent\Builder::getRelated() (View: C:\xampp\htdocs\prd_tracker\resources\views\tracker\ticket\script.blade.php)
, но она работает для разных таблиц.
Вот мой код
Модель пользователя
public function userAccess()
{
return $this->belongsToMany('App\User', 'user_access', 'user_id', 'user_access_id')->using('App\USER_ACCESS');
}
Logi c
use App\User;
$user_id = Auth::user()->id;
//Get All Those Users Ids Which Does Not Belong To Auth User
$exception_user_ids = User::whereDoesntHave('users', function ($query) use($user_id) {
$query->where('user_id', $user_id);
})
->pluck('id');