Я хочу показать предложения пользователя вошедшему в систему пользователю.
Он должен отображаться для пользователей, которые еще не вошли в систему вошедшего в систему пользователя follow
, а у user
нет blocked
ибыло blocked
.
Как я могу сделать соответствующий запрос?
Функция:
$id = Auth::id();
$users = User::with('profile')->where('id', '!=', $id )->inRandomOrder()->get();
Отношение по пользовательской модели
public function followers()
{
return $this->belongsToMany(User::class, 'followers', 'leader_id', 'follower_id')->withTimestamps();
}
public function followings()
{
return $this->belongsToMany(User::class, 'followers', 'follower_id', 'leader_id')->withTimestamps();
}
public function blockers()
{
return $this->belongsToMany(User::class, 'blockers', 'leader_id', 'block_id')->withTimestamps();
}
public function blockings()
{
return $this->belongsToMany(User::class, 'blockers', 'block_id', 'leader_id')->withTimestamps();
}
Блокировщики таблиц
Schema::create('blockers', function (Blueprint $table) {
$table->increments('id');
$table->integer('block_id')->unsigned();
$table->integer('leader_id')->unsigned();
$table->timestamps();
$table->foreign('block_id')->references('id')->on('users')->onDelete('cascade');
$table->foreign('leader_id')->references('id')->on('users')->onDelete('cascade');
});
Таблица последователей
Schema::create('followers', function (Blueprint $table) {
$table->increments('id');
$table->integer('follower_id')->unsigned();
$table->integer('leader_id')->unsigned();
$table->timestamps();
$table->foreign('follower_id')->references('id')->on('users')->onDelete('cascade');
$table->foreign('leader_id')->references('id')->on('users')->onDelete('cascade');