Laravel雄辩的BelongTo模型访问失败

时间:2019-01-10 11:34:18

标签: php laravel eloquent eloquent--relationship

我正在尝试通过使用Laravel Eloquent HasMany(反向)关系获取数据,但是我没有访问权限。每当我尝试时,它都会显示试图获取非对象的属性“名称”

我有两个模型。 类别文章类别有很多文章。这是模型:

类别模型

protected $fillable = [
    'user_id', 'name', 
]; 

public function articles()
{
    return $this->hasMany('App\Models\Article');
}

商品模型

protected $fillable = [
    'user_id', 'headline', 'summary', 'body', 'status', 'cover_image', 'image_caption', 'image_credit', 'cover_video', 'video_caption', 'video_credit', 'category', 'meta', 'tags',
]; 

public function category()
{
    return $this->belongsTo('App\Models\Category','category');
}

Article Controller

public function pendingposts()
{
    $user = Auth::user();
    $articles = Article::all();
return view('admin.article.pending-posts')->with(['user' => $user, 'articles' => $articles]);
}

View Blade (admin.article.pending-posts)

@foreach($articles->where('status', 'submitted')->sortByDesc('updated_at') as $article)
<tr>
<td >{{ $article->headline }}</td>
<td>{{ $article->category->name }} </td>
</tr>
@endforeach

在刀片中,我无法通过雄辩的BelongsTo功能访问类别,而且我也没有得到消息的原因:

  

ErrorException(E_ERROR)       尝试获取非对象的属性“名称”(查看:       C:\ xampp \ htdocs \ joliadmin \ resources \ views \ admin \ article \ pending-posts.blade.php)

2 个答案:

答案 0 :(得分:0)

您应该尝试以下操作:

    public function pendingposts()
{
    $user = Auth::user();
    $articles = Article::with('category')
        ->where('status', 'submitted')
        ->sortByDesc('updated_at')
        ->get(); 

    return view('admin.article.pending-posts')->with(compact('user', 'articles'));
}

@foreach($articles as $article)
    <tr>
    <td>{{ $article->headline }}</td>
    <td>{{ $article->category->name }} </td>
    </tr>
@endforeach

更新后的答案

类别模型

protected $fillable = [
    'user_id', 'name', 
]; 

public function article()
{
    return $this->hasMany('App\Models\Article');
}

答案 1 :(得分:0)

它在更改“ category_id”中的“文章”表“类别”列后起作用。感谢您的帮助。