2017-09-18 106 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

以小寫字母用戶編寫方法名稱 –

相關問題