简体   繁体   English

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

[英]laravel how do i access the data in a one to many relationship

ive got a one to many relationship between my model Project and Task.我的模型项目和任务之间存在一对多的关系。 i dont know how i can access the data from the tasks table via the data from my project table.我不知道如何通过我的项目表中的数据访问任务表中的数据。 i tried to access the name of the tasks via {{$projects->task->taskname}} and such but it wont let me.我试图通过{{$projects->task->taskname}}等访问任务的名称,但它不会让我。 im basically trying to display all projects with all their tasks in my view我基本上试图在我看来显示所有项目及其所有任务

my tables look like following我的表格如下所示

tasks: id |任务:id | project_id | project_id | taskname |任务名称 | description |说明 | timeestimated |预计时间 | taskstatus |任务状态 | created_at | created_at | updated_at更新时间

projects: id |项目:id | projectname |项目名称 | projectnamenospace |项目名称空间| projectdescription |项目描述 | created_at | created_at | updated_at更新时间

my models:我的模型:

Task:任务:

<?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);
    }

}

Project:项目:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

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

My Controller:我的控制器:

<?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]);
    }
}

assume in your dashboard.blade.php file.假设在您的dashboard.blade.php文件中。 You are passing multiple projects and each project has many tasks so you have to run two loops您正在传递多个项目,每个项目都有许多任务,因此您必须运行两个循环

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

and change in project model和项目模型的变化

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM