2017-09-18 65 views
0

我想在发布项目的帖子中显示用户的名字。但它显示错误:试图在视图文件中获取非对象的属性。如何使用id从laravel的其他表中获取数据?

我有用户表和项目表。在项目表中我有外键user_id。但我无法访问用户的名称,甚至无法访问用户表中的用户标识。在项目表中,user_id是0,它与用户表中的不同。我该如何解决这个问题?

用户模型:

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

项目模型:

public function User() { 

    return $this->belongsTo('App\User','user_id'); 
} 

迁移用户表:

Schema::create('users', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->string('name'); 
     $table->string('email')->unique(); 
     $table->string('password'); 

迁移项目表:

Schema::create('projects', function (Blueprint $table) { 
     $table->increments('id')->unique(); 
     $table->integer('user_id')->unsigned(); 
     $table->foreign('user_id')->references('id')->on('users'); 
     $table->string('name'); 
     $table->text('description'); 
     $table->date('date'); 
     $table->timestamps('date'); 


    }); 

视图文件:

@foreach ($projects as $key => $project) 
    <tr> 
    <td>{{ ++$i }}</td> 
    <td>{{ $project->name }}</td> 
    <td> {{$project->user_id->name}}</td> 
    <td>{{ $project->description }}</td> 
    <td>{{ $project->date }}</td> 
+0

用户表'id'必须对应于项目表中的'user_id'。这是关系存在的地方。你有没有检查过这个是正确的? –

+0

用户表中的id和项目表中的user_id不相同。在项目表中所有的ID都是0.我应该如何纠正这个? – kavi

+0

您如何创建项目,您是否可以显示控制器中的片段或将新记录添加到项目的位置? –

回答

0

1)正确的小失误形成的表如USER_ID和USER_ID

2)让我解决第一个关系:

一个用户可以有多个项目。 一个项目可以属于一个用户。

Model类解决

class Project extend Modeletcc 
{ 
    public function projectusers() { 
     return $this->hasOne('App\Project', 'user_id', 'id); 
    } 

} 

然后从控制器获取数据,如

class ProjectController extends Controller { 

     // to get data 
     public function __contstruct() { 
      $this->project = Project::with('projectusers')->get(); 
     } 

    // function for ending data to view 
    public function tesview() { 

    return view('view whic you wanna send your data', 
     [ 
      'project_details' => $this->project 
     ]); 
    } 

然后里面查看你可以简单的得到你想要

观点刀片U可以简单的获取所有数据他们与正常php

@foreach($project_details as $project) { 

      @foreach($project->projectusers as $users) { 
       {{ $user->name }} 
      } 

    } 
+0

为何显示错误:为foreach()提供了无效参数? – kavi

+0

确定用print_r()获取它然后解决它。 <?php print_r($ project)?>看看里面有什么,那么你可以很容易地解决它 –

0

谁通过项目ID发布的项目,你不能访问用户。您需要引用关系,然后调用模型属性。像这样:

@foreach ($projects as $project) 
    <tr> 
    <td>{{ ++$i }}</td> 
    <td>{{ $project->name }}</td> 
    <td> {{$project->user->name}}</td> 
    <td>{{ $project->description }}</td> 
    <td>{{ $project->date }}</td> 
    @endforeach 
+0

仍然显示相同的错误。 – kavi

+0

以小写字母用户编写方法名称 –

相关问题