Laravel 5 数据透视表 table 项目<->用户
Laravel 5 pivot table project<->user
我发现枢轴 table 非常复杂,我不知道下一步该做什么或我做错了什么,我找到了一些教程,但没有帮助我满足我的需要。
我有一个 projects
和 users
有一个 many-to-many
关系。
一 project hasMany users
和一 user hasMany projects
.
我现在所拥有的离开了与用户没有关系的项目。
这是我目前拥有的:
项目table
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();
});
}
用户table
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');
});
}
项目用户 table(枢轴)
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'));
}
您的 User
模型中的关系不正确。您必须交换密钥。
public function projects() {
return $this->belongsToMany('App\Project', 'project_users', 'user_id', 'project_id');
}
编辑最新评论:
不要考虑枢轴 table,只要你的关系设置正确,我相信它们是正确的,Laravel 会为你处理所有这些。
现在 $projects->users
没有任何意义,因为 projects
没有 users
。 projects
只是 Project
的集合。该集合中的每个 Project
都会有一个 users
关系。您必须遍历集合才能查看每个 Project
的用户。
foreach($projects as $project) {
foreach($project->users as $user) {
echo $user;
}
}
我发现枢轴 table 非常复杂,我不知道下一步该做什么或我做错了什么,我找到了一些教程,但没有帮助我满足我的需要。
我有一个 projects
和 users
有一个 many-to-many
关系。
一 project hasMany users
和一 user hasMany projects
.
我现在所拥有的离开了与用户没有关系的项目。
这是我目前拥有的:
项目table
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();
});
}
用户table
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');
});
}
项目用户 table(枢轴)
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'));
}
您的 User
模型中的关系不正确。您必须交换密钥。
public function projects() {
return $this->belongsToMany('App\Project', 'project_users', 'user_id', 'project_id');
}
编辑最新评论:
不要考虑枢轴 table,只要你的关系设置正确,我相信它们是正确的,Laravel 会为你处理所有这些。
现在 $projects->users
没有任何意义,因为 projects
没有 users
。 projects
只是 Project
的集合。该集合中的每个 Project
都会有一个 users
关系。您必须遍历集合才能查看每个 Project
的用户。
foreach($projects as $project) {
foreach($project->users as $user) {
echo $user;
}
}