Laravel и красноречивый возврат результатов от многих ко многим отношениям

На моем веб-сайте у меня есть таблица проекта, которая имеет отношение многие ко многим с другой таблицей project_user,

В таблице проекта у меня есть строка, которая выглядит так,

| ID  |  NAME       |
|-----|-------------|
|  1  | Project 1   |

В таблице project_user у меня есть несколько строк, которые выглядят так,

| ID  |  PROJET_ID  | USER_ID |
|-----|-------------|---------|
|  1  |      1      |    2    |
|  1  |      1      |    4    |
|  1  |      1      |   10    |

Модель проекта выглядит так,

    class Project extends Eloquent {

protected $fillable = [
'name',
'description',
'total_cost',
'start_date',
'finish_date',
'sales_person',
'project_manager',
'client_id',
'organisation_id',
'user_id'
];

public function collaborators() {
return $this->belongsToMany('User');
}
}

И модель для пользовательской таблицы выглядит так,

class User extends Eloquent implements UserInterface, RemindableInterface {

use UserTrait, RemindableTrait;

/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'users';

/**
* The attributes excluded from the model's JSON form.
*
* @var array
*/
protected $hidden = array('password', 'remember_token');

public function users()
{
return $this->belongsToMany('Project');
}
}

Что я хочу знать, так это как я могу получить проект из базы данных вместе с пользовательскими данными для соответствующих пользователей? Я сейчас пытаюсь это,

 $project = Project::whereHas('user', function($q)
{
//$q->where('user_id', '=', ResourceServer::getOwnerId());

})->get();

0

Решение

Я полагаю, ваше отношение project не usersтак что все довольно просто:

$user->load('projects.users');

$user->projects; // collection of user's projects

$user->projects->first()->collaborators; // collection of users in signle project

Если вы хотите только один проект, то вы можете сделать:

$user->projects()->find($projectId)->collaborators;

То, как вы пытались, также будет работать:

Project::whereHas('collaborators', function ($q) {
$q->where( .. );
})->with('collaborators')->get();
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]