Laravel 4 - 通过关系模型访问表

时间:2014-04-03 11:11:57

标签: php html laravel laravel-4

编辑:拼写错误

我有两个模型:项目和任务。两者都是相互关系的:

Project.php

class Project extends Eloquent {

    public function tasks() 
    {
        return $this->hasMany('Task');
    }

Task.php

class Task extends Eloquent {

    protected $guarded = [];

    public function project()
    {
        return $this->belongsTo('Project');
    }

通过我的ProjectsController,我将必要的变量传递给我的项目视图,如下所示:

ProjectsController:

public function index()
{
    $projects = Project::with('tasks')->get();

    return View::make('projects.index')
        ->with('projects', $projects);
}

在我的视图中,我遍历每个项目以显示表格上的所有内容:     

项目列表

<table>
    <tr>
        <th>Id</th>
        <th>Titel</th>
        <th>Description</th>
        <th>Tasks</th>
    </tr>

    @foreach($projects as $project)

    <tr>
        <td>{{$project->id}}</td>
        <td>{{$project->title}}</td>
        <td>{{$project->description}}</td>
        <td>{{$project->task}}</td>
    </tr>

    @endforeach
</table>

如您所见,最后一个td-Tag应该从tasks表访问数据。 我知道上面的视图不起作用。但是我想知道一般情况下,如果我想输出任务数量,每个项目都,我将如何处理它。

或其他任何东西,这解释了,在这种特殊情况下,我如何通过关系模型访问不同的表。

1 个答案:

答案 0 :(得分:2)

由于您使用$this->hasMany('Task');定义了项目模型并使用获取了任务模型,因此您只需执行

{{ $project->task()->count() }}

务必将任务称为函数,而不是属性。