Laravel Eloquent BelongTo Model Access не работает

Я пытаюсь получить данные, используя отношение 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');
}

Контроллер статей

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

Просмотр 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)


person Mosharof Zitu    schedule 10.01.2019    source источник
comment
Вы должны попробовать с with, например. Article::with('category')->get(), и еще одна причина может заключаться в том, что у вас нет данных для категории   -  person Kushal Suthar    schedule 10.01.2019
comment
Все ли ваши сообщения имеют категории?   -  person    schedule 10.01.2019
comment
@kushal Suthar, я попытался написать тот же код, что и вы упомянули, но все равно получаю ту же ошибку.   -  person Mosharof Zitu    schedule 10.01.2019
comment
Привет, я думаю, что ваши отношения могут быть неправильными из-за вашей файловой структуры - попробуйте, например, return $this->hasMany('App\Article'); разве ваши модели не находятся в папке моделей? Дайте мне знать, если это так, и я могу написать вам ответ :)   -  person party-ring    schedule 10.01.2019
comment
@swonder, да, все статьи / посты имеют категорию.   -  person Mosharof Zitu    schedule 10.01.2019
comment
@ user10341554, нет ничего страшного. другие красноречивые отношения работают нормально.   -  person Mosharof Zitu    schedule 10.01.2019


Ответы (2)


Вы должны попробовать это:

    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');
}
person Community    schedule 10.01.2019
comment
@MosharofZitu: проверьте Article модель в папке Model - person ; 10.01.2019
comment
@MosharofZitu, есть ли у всех ваших статей категории - person kellymandem; 10.01.2019
comment
@MosharofZitu: а также отобразите файл миграции вашей article таблицы или убедитесь, что вы создали связь между таблицей «статья» и таблицей «категория». - person ; 10.01.2019
comment
@ user10186369 это сработало после изменения имени столбца 'category' на 'category_id' в таблице статей. - person Mosharof Zitu; 14.01.2019

он работал после изменения столбца «Категория» таблиц «Статьи» в «category_id». Спасибо за помощь.

person Mosharof Zitu    schedule 14.01.2019