2014-11-24 93 views
0

我在2天前開始學習。我做了一個簡單的用戶登錄和博客發佈系統。無法獲得Laravel關係,新手

這裏是我的代碼,將獲取所有博客文章,也應該加入表一起

這是正確的?綜觀文檔和搜索,這似乎是正確的,但我不斷收到以下錯誤:

未定義的屬性:照亮\數據庫\雄辯\收藏:: $用戶

我的博客表structed這樣: enter image description here

而且用戶表像這樣 enter image description here

博客型號

class Blog extends Eloquent { 

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

用戶模型

class User extends Eloquent implements UserInterface, RemindableInterface { 

    use UserTrait, RemindableTrait; 

    /** 
    * The database table used by the model. 
    * 
    * @var string 
    */ 
    protected $table = 'users'; 

    /** 
    * The attributes excluded from the model's JSON form. 
    * 
    * @var array 
    */ 
    protected $hidden = array('password', 'remember_token'); 


    public function blog() 
    { 
     return $this->hasMany('Blog', 'id', 'user_id'); 
    } 
} 

回答

1

在你index()功能試試這個

public function index() 
{ 
    $posts = Blog::all(); 

    return View::make('blogs.index', array('posts' => $posts)); 
} 

然後在blogs.index你可以在你的DB(刀片)

{{ $posts->user->id }}{{ $posts->user->email }}或任何列訪問關係

+0

你能否解釋它是如何知道總是進行連接的?這一點令我困惑 – Ben 2014-11-24 20:59:59

+0

我希望我知道背後的深層技術原因,但我會盡我所能! Laravel在它的模型中使用了雄辯。雄辯會自動加載你爲你定義的關係,然後你就可以使用稱爲「動態屬性」的東西來訪問這些關係。基本上它真的很聰明! – 2014-11-24 21:09:12

0

隨着$blog = new Blog;你開始創建一個新的博客條目。您真正需要做的是查詢博客表並獲取用戶,這可以通過預先加載輕鬆完成。試試這個...

$blogs = Blog::with('users');

然後,當你創建你的觀點,你要使用的東西送的博客在您看來是這樣的...的with()方法的第一個參數是你想要的名稱給你的視圖中的變量,第二個是發送的實際變量。

return View::make('blogs.index')->with('blogs', $blogs);