laravel我如何以一对多关系访问数据

时间:2019-12-04 10:08:09

标签: php laravel foreign-keys one-to-many

我的模型Project和Task之间存在一对多的关系。我不知道如何通过项目表中的数据访问任务表中的数据。我试图通过{{$projects->task->taskname}}访问任务的名称,但是这样不会让我。我基本上是想在我看来显示所有项目及其所有任务

我的表格如下

任务: id | project_id |任务名称|描述|估计时间| taskstatus | created_at | Updated_at

个项目: id |项目名称| projectnamenospace |项目说明| created_at | Updated_at

我的模特:

任务:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Task extends Model
{
    protected $fillable = [
        'taskname',
        'description',
        'tasktext',
    ];

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

    public function comment(){
        return $this->hasMany('App\Comment');
    }

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

}

项目:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Project extends Model
{
    public function task(){
        return $this->hasMany(App::class);
    }
}

我的控制器:

<?php

namespace App\Http\Controllers;

use App\Project;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Illuminate\Http\Request;

class DashboardController extends Controller
{
    public function index(Project $project)
    {
        $ldate = date('Y-m-d H:i:s');

        $projects = Project::all();

        $username = Auth::user()->name;
        return view('dashboard', ['user' => $username, 'ldate' => $ldate, 'projects' => $projects]);
    }
}

1 个答案:

答案 0 :(得分:0)

假设您的dashboard.blade.php文件中。您正在传递多个项目,每个项目都有许多任务,因此您必须运行两个循环

@foreach($projects as $key=>$project)
    @foreach($project->task as $taskRow)
        {{$taskRow->taskname}}
    @endforeach
@endforeach

并更改项目模型

public function task(){
    return $this->hasMany(Task::class);
}