2017-05-04 121 views
1

我試圖將我的用戶的User_id與Creator_id匹配,以在我的帖子 中顯示創建者用戶名,但即時獲取嘗試從非對象錯誤獲取屬性,並且我不能得到角落找尋它嘗試獲取laravel中的非對象錯誤的屬性

在我的控制器 postcontroller.php功能:

public function index() 
    { 
    $allusers = users::getusers(); 

    $posts = DB::table('posts')->get(); 
    foreach ($posts as $posts) { 
     foreach ($allusers as $allusers) { 
      if ($posts->creator_id == $allusers->user_id) { 
       array_push($posts,$allusers->username); 
      } 
     } 
    } 
    return view('blog',['posts'=>$posts]); 
    } 

在我的模型功能:

public static function getusers(){ 
    $allusers = users::all(); 
    return $allusers; 
    } 
+0

你能顯示$ posts和$ allusers的輸出嗎? – Exprator

+0

您是否試過'print_r($ posts)'來檢查它保存的數據? –

+0

它不是一個最好的方式來查看如何創建一些東西,我建議你最好的東西是保存user_id當用戶創建一個帖子,然後你可以簡單地從該use_id得到的一切 –

回答

3

您正在使用您的foreach相同的變量名循環:

foreach ($posts as $post) { 
    foreach ($allusers as $user) { 
     if ($post->creator_id == $user->user_id) { 
      array_push($post,$user->username); 
     } 
    } 
} 

但對於您的問題,您應該儘量在安置自己的型號

public function user(){ 
    return $this->belongsTo(User::class, 'creator_id', 'user_id); 
} 

然後在視圖中添加此:

@foreach($posts as $post) 
    {{ $post->user->name }} 
@endforeach 

https://laravel.com/docs/5.4/eloquent-relationships#one-to-many-inverse

+0

啊是的,我忘了變量名稱:')我讀了關於belongssto()方法,作爲一種魅力感謝! –

0

您的用戶表是否有像user_id這樣的列?

我想你已經與帖子creator_id檢查與用戶表ID。

+0

爲什麼不在第一個循環中也有相同的名稱作爲帖子3次? –

相關問題