laravel在关系表上的位置

时间:2013-08-03 13:54:56

标签: php mysql laravel

我正在使用laravel,我有一个带有'projects'的主表和一个带'users'的表,一个将两者作为多对多关系链接的中间表。

现在我想显示一个项目列表,但如果它们超过'projects.max_people'那么它们应该从这个列表中隐藏,我该如何在laravel中这样做?

在我做了Project :: get()之后问题就是我在视图中看到用户了吗?如何在条件中添加这个?

1 个答案:

答案 0 :(得分:0)

您应该创建一个名为ProjectUser的新对象。在这个对象中应该包含一个' project_id'和' user_id'。

然后,您的项目模型将如下所示:

<?php

class Project extends \Eloquent
{
    protected $table = 'projects';

    public function projectUsers(){
       $this->hasMany('ProjectUser', 'project_id');
    }
}

用户类:

<?php

class Project extends \Eloquent
{
    protected $table = 'projects';

    public function projectUsers(){
       $this->hasMany('ProjectUser', 'user_id');
    }
}

ProjectUser类:

class ProjectUser extends \Eloquent
{
    protected $table = 'project_users';

    public function project(){
       $this->belongsTo('Project'`enter code here`, 'project_id');
    }

    public function user(){
       $this->belongsTo('User', 'user_id');
    }
}

现在,您可以获得项目的用户:

$projects = Project::with('projectUsers.user')->get();

循环浏览这些对象时,您可以像这样访问用户:

@foreach($projects as $project)

   @foreach($project->projectUsers as $projectUser)

      {{ $projectUser->user->id }}

   @endforeach

@endforeach