Проект сводной таблицы Laravel 5 & lt; — & gt; пользователь

Я нахожу сводные таблицы довольно сложными и не вижу, что делать дальше или что я делаю неправильно, я нашел несколько уроков, но не помог мне в моих нуждах.

у меня есть projects а также users с many-to-many связь.
Один project hasMany users и один user hasMany projects,

То, что у меня сейчас есть, оставляет проекты без отношения к пользователю.

Это то, что я до сих пор:

Таблица проектов

class CreateProjectsTable extends Migration {

public function up()
{
Schema::create('projects', function(Blueprint $table)
{
$table->increments('id');
$table->string('name');
$table->date('completion_date');
$table->integer('completed')->default(0);
$table->integer('active')->default(0);
$table->timestamps();
});
}

Таблица пользователей

class CreateUsersTable extends Migration {

public function up()
{
Schema::create('users', function(Blueprint $table)
{
$table->increments('id');
$table->integer('company_id');
$table->integer('project_id');
$table->integer('usertype_id')->default(0);
$table->string('username');
$table->string('password');
});
}

Таблица пользователей проекта (сводная)

class CreateProjectUsersTable extends Migration {

public function up()
{
Schema::create('project_users', function(Blueprint $table)
{
$table->increments('id');
$table->integer('project_id')->references('id')->on('project');;
$table->integer('user_id')->references('id')->on('user');;
});
}

Модель пользователя

public function projects() {
return $this->belongsToMany('App\Project', 'project_users', 'user_id', 'project_id');
}

Модель проекта

public function users() {
return $this->belongsToMany('App\User', 'project_users', 'project_id', 'user_id');
}

Контролер проекта

public function index(Project $project)
{

$projects = $project->with('users')->get();

dd($projects);

$currenttime = Carbon::now();

//return view('project.index', array('projects' => $projects, 'currenttime' => $currenttime));

return view('user.index', compact('projects'));
}

2

Решение

Отношения в вашем User модель не верная. Вы должны поменять ключи.

public function projects() {
return $this->belongsToMany('App\Project', 'project_users', 'user_id', 'project_id');
}

Изменить относительно последнего комментария:

Не думайте о сводной таблице, если у вас правильно настроены отношения, как я полагаю, Laravel справится со всем этим за вас.

Сейчас $projects->users не имеет никакого смысла, потому что projects не имеет users, projects это просто коллекция Project, каждый Project в этой коллекции будет иметь users связь. Вы должны были бы перебрать коллекцию, чтобы просмотреть каждый Projectпользователи.

foreach($projects as $project) {
foreach($project->users as $user) {
echo $user;
}
}
2

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

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

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