Нужна помощь в построении выражения запроса в Laravel - PullRequest
0 голосов
/ 16 февраля 2020

Я недавно начал использовать Laravel и застрял в запросе. Я работаю над приложением «Задачи», в котором пользователь выполняет разные задачи, опубликованные администратором.

Я хочу получить только те задачи, которые не были выполнены пользователем, выполнившим вход. когда пользователь завершает задачу, у меня появляется третья таблица complete_tasks, в которой хранятся и user_id, и task_id.

Вот так выглядят мои таблицы:

таблица пользователя (таблица по умолчанию создается Laravel auth) атрибуты: id, имя, адрес электронной почты, пароль

таблица задач атрибуты: id, имя, описание

таблица Completed_task атрибуты: идентификатор, user_id, TASK_ID

1018 * Я попытался с помощью belongsToMany отношения между пользователем и задачами, используя completed_task таблицы в качестве оси

функции отношений в модели пользователей

public function tasks(){
    return $this->belongsToMany('App\Task', 'completed_task', 'user_id','task_id');
}

по с помощью этой функции я получаю все задачи, которые были выполнены пользователем, вошедшим в систему, но я хочу получить задачи, которые не были выполнены пользователем, вошедшим в систему.

Ответы [ 2 ]

1 голос
/ 16 февраля 2020

Все функции модели выглядят так:

Пользователь. php

// A user has many tasks
public function tasks(){
  return $this->hasMany(Task::class);
}

Задание. php

// A Task belongs to User
public function users(){
  return $this->belongsTo(User::class);
}

// A task has a completed status
public function completed(){
  return $this->hasOne(Completed::class);
}

Завершено. php

// A Completed status belongs to a Task
public function tasks(){
  return $this->belongsTo(Task::class);
}
1 голос
/ 16 февраля 2020

Пожалуйста, попробуйте это:

$tasks = Tasks::whereNotIn('id', function($query) {
        $query->select('task_id')
        ->from('completed_task')
        ->where('user_id', '=', auth()->user()->id);
})->get();

Это должно дать вам все задачи, которые зарегистрированный пользователь еще не выполнил (проверьте таблицу и имена полей)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...