2017-08-05 92 views
0

模型我有具有功能如下一個Post模型上的方法的屬性:訪問返回在Laravel

namespace App; 

use App\Category; 

class Post extends Model 

{ 
    public function category() 
    { 

    return $this->hasOne(Category::class); 

    } 

} 

我的分類模型看起來像這樣

namespace App; 

use App\Post; 

class Category extends Model 
{ 
    public function posts() 
    { 

    return $this->hasMany(Post::class); 

    } 
} 

在我查看,我想訪問名稱字段的類別爲每個職位。

我認爲我將有機會獲得這種模式,因此可以通過在我的刀片文件這樣得到它:

{{ $post->category()->name }} 

$職位是正確的,我有機會到其他屬性,但此引發錯誤:

Undefined property: Illuminate\Database\Eloquent\Relations\HasOne::$name 

任何想法?

回答

2

你應該訪問它的屬性:

{{ $post->category->name }} 

功能類別()應在Post模型被定義爲:

public function category() 
{ 
    return $this->belongsTo(Category::class, 'category_id'); 
} 

如果category_id還有另一個名字,只是改變它在參數。

+0

,這將引發「試圖獲得非對象的財產」錯誤。 – helenkitt

+0

'Post'有一個'category_id'字段?或者'Category'有一個'post_id'字段? – Laerte

+0

該字段僅稱爲類別。但已經通過,並將其更改爲category_id我收到錯誤「SQLSTATE [42S22]:未找到列:1054未知列'categories.post_id'」 – helenkitt

0

,你可以很容易地做到這一點:

$category=$post->category; 
$cat_name=$category->name; 

此外,如果你只是想在類別名稱字段,你可以使用:

$cat_name=$post->category()->get(['name']);