【问题标题】:laravel how do i access the data in a one to many relationshiplaravel 如何以一对多关系访问数据
【发布时间】:2019-12-04 10:08:09
【问题描述】:

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

我的表格如下所示

任务: 编号 |项目 ID |任务名 |描述 |预计时间 |任务状态 | created_at |更新时间

项目: 编号 |项目名称 |项目名称空间 |项目描述 | created_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]);
    }
}

【问题讨论】:

  • {{$projects-&gt;task-&gt;taskname}} 尝试单人{{$project-&gt;task-&gt;taskname}}

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


【解决方案1】:

假设在您的 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);
}

【讨论】:

  • 我尝试运行它,它告诉我 Class App\App 未找到,是的,我试图输出每个项目及其所有任务,抱歉没有告诉 :)
  • 在项目模型中将 App::class 替换为 Task::class 或您的任务表...我更新了我的答案
  • 啊,没注意到我写了 App:class,它现在似乎可以工作了,伙计! :D
猜你喜欢
  • 2017-08-07
  • 1970-01-01
  • 1970-01-01
  • 2020-09-01
  • 2014-08-11
  • 1970-01-01
  • 1970-01-01
  • 2020-07-08
  • 2020-03-26
相关资源
最近更新 更多